{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 🤗 Welcome to AdalFlow!\n",
    "## The library to build & auto-optimize any LLM task pipelines\n",
    "\n",
    "Thanks for trying us out, we're here to provide you with the best LLM application development experience you can dream of 😊 any questions or concerns you may have, [come talk to us on discord,](https://discord.gg/ezzszrRZvT) we're always here to help! ⭐ <i>Star us on <a href=\"https://github.com/SylphAI-Inc/AdalFlow\">Github</a> </i> ⭐\n",
    "\n",
    "\n",
    "# Quick Links\n",
    "\n",
    "Github repo: https://github.com/SylphAI-Inc/AdalFlow\n",
    "\n",
    "Full Tutorials: https://adalflow.sylph.ai/index.html#.\n",
    "\n",
    "Deep dive on each API: check out the [developer notes](https://adalflow.sylph.ai/tutorials/index.html).\n",
    "\n",
    "Common use cases along with the auto-optimization:  check out [Use cases](https://adalflow.sylph.ai/use_cases/index.html).\n",
    "\n",
    "# Author\n",
    "\n",
    "This notebook was created by [Li Yin]().\n",
    "\n",
    "# Outline\n",
    "\n",
    "This is a quick introduction of what AdalFlow is capable of. We will cover:\n",
    "\n",
    "* Build a standard RAG.\n",
    "* Evaluate the RAG performance with HotpotQA dataset using deepseek and gpt model series.\n",
    "* Auto-optimize the RAG with the HotpotQA dataset.\n",
    "\n",
    "\n",
    "\n",
    "# Installation\n",
    "\n",
    "1. Use `pip` to install the `adalflow` Python package. We will need `openai` and `together` from the extra packages.\n",
    "\n",
    "  ```bash\n",
    "  pip install adalflow[openai,together]\n",
    "  ```\n",
    "2. Setup  `openai` and `groq` API key in the environment variables"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from IPython.display import clear_output\n",
    "\n",
    "!pip install -U adalflow[openai,together]\n",
    "\n",
    "clear_output()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Set Environment Variables\n",
    "\n",
    "Run the following code and pass your api key.\n",
    "\n",
    "Note: for normal `.py` projects, follow our [official installation guide](https://lightrag.sylph.ai/get_started/installation.html).\n",
    "\n",
    "*Go to [OpenAI](https://platform.openai.com/docs/introduction) and [Together](https://www.together.ai/) to get API keys if you don't already have.*"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "API keys have been set.\n"
     ]
    }
   ],
   "source": [
    "import os\n",
    "\n",
    "from getpass import getpass\n",
    "\n",
    "\n",
    "OPENAI_API_KEY = getpass(\"Please enter your OpenAI API key: \")\n",
    "TOGETHER_API_KEY = getpass(\"Please enter your Together API key: \")\n",
    "\n",
    "\n",
    "os.environ[\"OPENAI_API_KEY\"] = OPENAI_API_KEY\n",
    "os.environ[\"TOGETHER_API_KEY\"] = TOGETHER_API_KEY\n",
    "\n",
    "print(\"API keys have been set.\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 😇 Build the RAG\n",
    "\n",
    "We will use DsPy's retriever in this demonstration to retrieve relevant documents from wikipedia. We will wrap it into AdalFlow's retriever api and use AdalFlow's generator to generate the answer."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "!pip install dspy\n",
    "clear_output()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/liyin/Documents/test/LightRAG/.venv/lib/python3.12/site-packages/pydantic/_internal/_config.py:341: UserWarning: Valid config keys have changed in V2:\n",
      "* 'fields' has been removed\n",
      "  warnings.warn(message, UserWarning)\n"
     ]
    }
   ],
   "source": [
    "# wrap the retriever\n",
    "\n",
    "import adalflow as adal\n",
    "from adalflow.core.types import RetrieverOutput\n",
    "import dspy\n",
    "from typing import Optional\n",
    "\n",
    "colbertv2_wiki17_abstracts = dspy.ColBERTv2(\n",
    "    url=\"http://20.102.90.50:2017/wiki17_abstracts\"\n",
    ")\n",
    "\n",
    "dspy.settings.configure(rm=colbertv2_wiki17_abstracts)\n",
    "\n",
    "\n",
    "class DspyRetriever(adal.Retriever):\n",
    "    def __init__(self, top_k: int = 3):\n",
    "        super().__init__()\n",
    "        self.top_k = top_k\n",
    "        self.dspy_retriever = dspy.Retrieve(k=top_k)\n",
    "\n",
    "    def call(\n",
    "        self, input: str, top_k: Optional[int] = None, id: str = None\n",
    "    ) -> RetrieverOutput:\n",
    "\n",
    "        k = top_k or self.top_k\n",
    "\n",
    "        if not input:\n",
    "            raise ValueError(f\"Input cannot be empty, top_k: {k}\")\n",
    "\n",
    "        output = self.dspy_retriever(query=input, k=k)\n",
    "        # print(f\"dsy_retriever output: {output}\")\n",
    "        documents = output.passages\n",
    "\n",
    "        return RetrieverOutput(\n",
    "            query=input,\n",
    "            documents=documents,\n",
    "            doc_indices=[],\n",
    "        )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "from dataclasses import dataclass, field\n",
    "from typing import Union\n",
    "\n",
    "\n",
    "# output data class\n",
    "@dataclass\n",
    "class AnswerData(adal.DataClass):\n",
    "    reasoning: str = field(\n",
    "        metadata={\"desc\": \"The reasoning to produce the answer\"},\n",
    "    )\n",
    "    answer: str = field(\n",
    "        metadata={\"desc\": \"The answer you produced\"},\n",
    "    )\n",
    "\n",
    "    __output_fields__ = [\"reasoning\", \"answer\"]\n",
    "\n",
    "\n",
    "# prompt\n",
    "task_desc_str = r\"\"\"Answer questions with short factoid answers.\n",
    "\n",
    "You will receive context(contain relevant facts).\n",
    "Think step by step.\"\"\"\n",
    "\n",
    "answer_template = \"\"\"<START_OF_SYSTEM_PROMPT>\n",
    "{{task_desc_str}}\n",
    "\n",
    "{{output_format_str}}\n",
    "{# Few shot demos #}\n",
    "{% if few_shot_demos is not none %}\n",
    "Here are some examples:\n",
    "{{few_shot_demos}}\n",
    "{% endif %}\n",
    "<END_OF_SYSTEM_PROMPT>\n",
    "<START_OF_USER>\n",
    "Context: {{context}}\n",
    "Question: {{question}}\n",
    "<END_OF_USER>\n",
    "\"\"\"\n",
    "\n",
    "\n",
    "class VanillaRAG(adal.Component):\n",
    "    def __init__(self, passages_per_hop=3, model_client=None, model_kwargs=None):\n",
    "        super().__init__()\n",
    "\n",
    "        self.passages_per_hop = passages_per_hop\n",
    "\n",
    "        self.retriever = DspyRetriever(top_k=passages_per_hop)\n",
    "        self.llm_parser = adal.DataClassParser(\n",
    "            data_class=AnswerData, return_data_class=True, format_type=\"json\"\n",
    "        )\n",
    "        self.llm = adal.Generator(\n",
    "            model_client=model_client,\n",
    "            model_kwargs=model_kwargs,\n",
    "            prompt_kwargs={\n",
    "                \"task_desc_str\": adal.Parameter(\n",
    "                    data=task_desc_str,\n",
    "                    role_desc=\"\"\"Task description for the language model,\\\n",
    "                    used with the following template: \\\n",
    "                    {{task_desc_str}} \\\n",
    "                    {{output_format_str}}\\\n",
    "                    <START_OF_USER>\n",
    "Context: {{context}}\n",
    "Question: {{question}}\n",
    "<END_OF_USER>\"\"\",\n",
    "                    param_type=adal.ParameterType.PROMPT,\n",
    "                    requires_opt=True,\n",
    "                    instruction_to_backward_engine=\"You need find the best way(where does the right answer come from the context) to extract the RIGHT answer from the context.\",\n",
    "                    instruction_to_optimizer=\"You need find the best way(where does the right answer come from the context) to extract the RIGHT answer from the context.\",\n",
    "                ),\n",
    "                \"output_format_str\": self.llm_parser.get_output_format_str(),\n",
    "            },\n",
    "            template=answer_template,\n",
    "            output_processors=self.llm_parser,\n",
    "            use_cache=True,\n",
    "        )\n",
    "\n",
    "    def bicall(\n",
    "        self, question: str, id: str = None\n",
    "    ) -> Union[adal.GeneratorOutput, adal.Parameter]:\n",
    "        \"\"\"This function is used to call the model for both training and eval mode.\"\"\"\n",
    "        retriever_out = self.retriever(input=question)\n",
    "        retrieved_context = None\n",
    "        if isinstance(retriever_out, adal.Parameter):\n",
    "            successor_map_fn = lambda x: (  # noqa E731\n",
    "                \"\\n\\n\".join(x.data.documents)\n",
    "                if x.data and x.data and x.data.documents\n",
    "                else \"\"\n",
    "            )\n",
    "            retriever_out.add_successor_map_fn(\n",
    "                successor=self.llm, map_fn=successor_map_fn\n",
    "            )\n",
    "        else:\n",
    "            successor_map_fn = lambda x: (  # noqa E731\n",
    "                \"\\n\\n\".join(x.documents) if x and x.documents else \"\"\n",
    "            )\n",
    "            retrieved_context = successor_map_fn(retriever_out)\n",
    "        prompt_kwargs = {\n",
    "            \"context\": retrieved_context,\n",
    "            \"question\": question,\n",
    "        }\n",
    "        output = self.llm(prompt_kwargs=prompt_kwargs, id=id)\n",
    "        return output"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# all models options\n",
    "from adalflow.components.model_client.openai_client import OpenAIClient\n",
    "from adalflow.components.model_client.together_client import TogetherClient\n",
    "\n",
    "\n",
    "gpt_3_model = {\n",
    "    \"model_client\": OpenAIClient(input_type=\"text\"),\n",
    "    \"model_kwargs\": {\n",
    "        \"model\": \"gpt-3.5-turbo-0125\",\n",
    "        \"max_tokens\": 2000,\n",
    "        \"temperature\": 0.0,\n",
    "        \"top_p\": 0.99,\n",
    "        \"frequency_penalty\": 0,\n",
    "        \"presence_penalty\": 0,\n",
    "        \"stop\": None,\n",
    "    },\n",
    "}\n",
    "\n",
    "gpt_o1_model = {\n",
    "    \"model_client\": OpenAIClient(),\n",
    "    \"model_kwargs\": {\n",
    "        \"model\": \"o1\",\n",
    "        \"temperature\": 1,\n",
    "        # \"top_p\": 0.99,\n",
    "    },\n",
    "}\n",
    "\n",
    "gpt_o3_mini_model = {\n",
    "    \"model_client\": OpenAIClient(),\n",
    "    \"model_kwargs\": {\n",
    "        \"model\": \"o3-mini\",\n",
    "        \"temperature\": 1,\n",
    "        # \"top_p\": 0.99,\n",
    "    },\n",
    "}\n",
    "\n",
    "gpt_4o_model = {\n",
    "    \"model_client\": OpenAIClient(),\n",
    "    \"model_kwargs\": {\n",
    "        \"model\": \"gpt-4o\",\n",
    "        \"temperature\": 1,\n",
    "        \"top_p\": 0.99,\n",
    "    },\n",
    "}\n",
    "\n",
    "deepseek_r1_model = {\n",
    "    \"model_client\": TogetherClient(),\n",
    "    \"model_kwargs\": {\n",
    "        \"model\": \"deepseek-ai/DeepSeek-R1\",\n",
    "        \"temperature\": 1,\n",
    "        \"top_p\": 0.99,\n",
    "    },\n",
    "}\n",
    "\n",
    "deepseek_r1_distilled_model = {\n",
    "    \"model_client\": TogetherClient(),\n",
    "    \"model_kwargs\": {\n",
    "        \"model\": \"deepseek-ai/DeepSeek-R1-Distill-Llama-70B\",\n",
    "        \"temperature\": 1,\n",
    "        \"top_p\": 0.99,\n",
    "    },\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "GeneratorOutput(id=None, data=AnswerData(reasoning='The context lists three different individuals named Shakespear: Ronald Shakespear (Argentine graphic designer), William Henry Irvine Shakespear (British civil servant and explorer), and Wilma Shakespear (Australian netball player, coach, and sports administrator).', answer='They are multiple individuals: Ronald Shakespear, William Henry Irvine Shakespear, and Wilma Shakespear.'), error=None, usage=CompletionUsage(completion_tokens=615, prompt_tokens=346, total_tokens=961), raw_response='```\\n{\\n    \"reasoning\": \"The context lists three different individuals named Shakespear: Ronald Shakespear (Argentine graphic designer), William Henry Irvine Shakespear (British civil servant and explorer), and Wilma Shakespear (Australian netball player, coach, and sports administrator).\",\\n    \"answer\": \"They are multiple individuals: Ronald Shakespear, William Henry Irvine Shakespear, and Wilma Shakespear.\"\\n}\\n```', metadata=None)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "AnswerData(reasoning='The context lists three different individuals named Shakespear: Ronald Shakespear (Argentine graphic designer), William Henry Irvine Shakespear (British civil servant and explorer), and Wilma Shakespear (Australian netball player, coach, and sports administrator).', answer='They are multiple individuals: Ronald Shakespear, William Henry Irvine Shakespear, and Wilma Shakespear.')"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rag = VanillaRAG(**gpt_o1_model)\n",
    "\n",
    "query = \"Who is Shakespear?\"\n",
    "\n",
    "output = rag.bicall(query)\n",
    "print(output)\n",
    "output.data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "# check the dataset\n",
    "from adalflow.datasets.hotpot_qa import HotPotQA\n",
    "\n",
    "\n",
    "def load_datasets():\n",
    "\n",
    "    trainset = HotPotQA(split=\"train\", size=100)  # 20\n",
    "    valset = HotPotQA(split=\"val\", size=100)  # 50\n",
    "    testset = HotPotQA(split=\"test\", size=200)  # to keep the same as the dspy #50\n",
    "    print(f\"trainset, valset: {len(trainset)}, {len(valset)}, example: {trainset[0]}\")\n",
    "    return trainset, valset, testset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "split_csv_path: /Users/liyin/.adalflow/cache_datasets/hotpot_qa_dev_titles/train.json\n",
      "split_csv_path: /Users/liyin/.adalflow/cache_datasets/hotpot_qa_dev_titles/val.json\n",
      "split_csv_path: /Users/liyin/.adalflow/cache_datasets/hotpot_qa_dev_titles/test.json\n",
      "trainset, valset: 100, 100, example: HotPotQAData(id='5a7cc25d5542990527d55520', question='Which host of Whodunnit died on November 16, 2009?', answer='Edward Woodward', gold_titles={'Edward Woodward', 'Whodunnit? (UK TV series)'}, context={'title': ['Cyclone Tia', 'Harry Taylor (ice hockey)', 'Edward Woodward', 'Cheikh El Avia Ould Mohamed Khouna', 'Tornado outbreak of November 16–18, 2015', 'Whodunnit? (UK TV series)', 'First Cabinet of Donald Tusk', 'Maranhão gubernatorial election, 1994', 'Clark Van Galder', 'James Fraser Mustard'], 'sentences': [['Severe Tropical Cyclone Tia was the first of six tropical cyclones to affect Vanuatu, during the 1991–92 South Pacific cyclone season.', ' The system was first noted within the South Pacific convergence zone as a small tropical depression on November 13, to the northeast of the Solomon Islands.', ' Over the next few days the system gradually developed further within an area of light winds in the upper troposphere, before it was named Tia early on November 16.', ' Later that day due to a developing northerly steering current, the system slowed down and undertook a small anticlockwise loop before starting to move towards the southwest and rapidly intensify.', ' After rapidly intensifying throughout November 16 and 17, Tia passed within 55 km of the Solomon Island: Anuta at around 1800 UTC on November 17, before passing near Tikopia Island six hours later.', ' As Tia moved near Tikopia, the system reached its peak intensity as a category 3 severe tropical cyclone, with 10‑minute sustained windspeeds of 140 km/h .'], ['Harold Taylor (March 28, 1926 – November 16, 2009) was a professional ice hockey player who played 66 games in the National Hockey League.', ' Born in St. James, Manitoba, he played with the Toronto Maple Leafs and Chicago Black Hawks and won a Stanley Cup with the Leafs in 1949.', ' He died in Sidney, British Columbia in November 2009.'], ['Edward Albert Arthur Woodward, OBE (1 June 1930 – 16 November 2009) was an English actor and singer.'], ['Cheikh El Avia Ould Mohamed Khouna (born 1956) is a Mauritanian political figure.', \" He was the 7th Prime Minister of Mauritania from January 2, 1996 to December 18, 1997, Minister of Foreign Affairs from July 12, 1998 to November 16, 1998, and Prime Minister again from November 16, 1998 to July 6, 2003 under President Maaouya Ould Sid'Ahmed Taya; later, he briefly served as Minister of Foreign Affairs again in 2008.\"], ['The Tornado outbreak of November 16–18, 2015 was a highly unusual nocturnal late-season tornado outbreak that significantly impacted the lower Great Plains on November\\xa016 before producing additional weaker tornadoes across parts of the Southern United States the following two days.', ' The first day of the outbreak spawned multiple strong, long-track tornadoes, including two consecutive EF3s that caused major damage near Pampa, Texas.', ' Overall, the outbreak produced 61\\xa0tornadoes in all, and was described as by the National Weather Service office in Dodge City, Kansas as being \"unprecedented in recorded history for southwest Kansas.\"', ' Despite spawning multiple strong tornadoes after dark, no fatalities and only one minor injury occurred as a result of the outbreak.'], ['Whodunnit?', ' was a British television game show that originally aired on ITV as a pilot on 15 August 1972 hosted by Shaw Taylor and then as a full series from 25 June 1973 to 26 June 1978 first hosted by Edward Woodward in 1973 and then hosted by Jon Pertwee from 1974 to 1978.'], ['The First Cabinet of Donald Tusk was the government of Poland from November 16, 2007 to November 18, 2011 sitting in the Council of Ministers during the 6th legislature of the Sejm and the 7th legislature of the Senate.', ' It was appointed by President Lech Kaczyński on November 16, 2007, and passed the vote of confidence in Sejm on November 24, 2007.', \" Led by the centre-right politician Donald Tusk it was supported by the coalition of two parties: the liberal conservative Civic Platform (PO) and the agrarian Polish People's Party (PSL).\"], [\"The Maranhão gubernatorial election of 1994 was held in the Brazilian state of Maranhão on October 3, alongside Brazil's general elections, with a second round on November 16.\", ' Liberal Front Party (PFL) candidate Roseana Sarney was elected on November 16, 1994.'], ['Clark Van Galder (February 6, 1909 – November 16, 1965) was an American football, basketball player, track athlete, and coach.', ' He served as the head football coach at La Crosse State Teachers, now University of Wisconsin–La Crosse, from 1948 to 1951 and at Fresno State College, now California State University, Fresno, from 1952 to 1958, compiling a career college football record of 77–27–3.', ' Van Galder died on November 16, 1965 after collapsing at a banquet in Madison, Wisconsin.', ' He had five sons, the fourth of which, Tim, played football as a quarterback at Iowa State University and then in the National Football League (NFL) with the New York Jets and St. Louis Cardinals.'], ['James Fraser Mustard, {\\'1\\': \", \\'2\\': \", \\'3\\': \", \\'4\\': \"} (October 16, 1927 – November 16, 2011) was a Canadian doctor and renowned researcher in early childhood development.', ' Born, raised and educated in Toronto, Ontario, Mustard began his career as a research fellow at the University of Toronto where he studied the effects of blood lipids, their relation to heart disease and how Aspirin could mitigate those effects.', ' He published the first clinical trial showing that aspirin could prevent heart attacks and strokes.', \" In 1966, he was one of the founding faculty members at McMaster University's newly established medical school.\", ' He was the Dean of the Faculty of Health Sciences and the medical school at McMaster University from 1972-1982.', ' In 1982, he helped found the Canadian Institute for Advanced Research and served as its founding president, serving until 1996.', ' He wrote several papers and studies on early childhood development, including a report used by the Ontario Government that helped create a province-wide full-day kindergarten program.', \" He won many awards including being made a companion of the Order of Canada – the order's highest level – and was inducted into the Canadian Medical Hall of Fame.\", ' He died November 16th, 2011.']]})\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "HotPotQAData(id='5a7cc25d5542990527d55520', question='Which host of Whodunnit died on November 16, 2009?', answer='Edward Woodward', gold_titles={'Edward Woodward', 'Whodunnit? (UK TV series)'}, context={'title': ['Cyclone Tia', 'Harry Taylor (ice hockey)', 'Edward Woodward', 'Cheikh El Avia Ould Mohamed Khouna', 'Tornado outbreak of November 16–18, 2015', 'Whodunnit? (UK TV series)', 'First Cabinet of Donald Tusk', 'Maranhão gubernatorial election, 1994', 'Clark Van Galder', 'James Fraser Mustard'], 'sentences': [['Severe Tropical Cyclone Tia was the first of six tropical cyclones to affect Vanuatu, during the 1991–92 South Pacific cyclone season.', ' The system was first noted within the South Pacific convergence zone as a small tropical depression on November 13, to the northeast of the Solomon Islands.', ' Over the next few days the system gradually developed further within an area of light winds in the upper troposphere, before it was named Tia early on November 16.', ' Later that day due to a developing northerly steering current, the system slowed down and undertook a small anticlockwise loop before starting to move towards the southwest and rapidly intensify.', ' After rapidly intensifying throughout November 16 and 17, Tia passed within 55 km of the Solomon Island: Anuta at around 1800 UTC on November 17, before passing near Tikopia Island six hours later.', ' As Tia moved near Tikopia, the system reached its peak intensity as a category 3 severe tropical cyclone, with 10‑minute sustained windspeeds of 140 km/h .'], ['Harold Taylor (March 28, 1926 – November 16, 2009) was a professional ice hockey player who played 66 games in the National Hockey League.', ' Born in St. James, Manitoba, he played with the Toronto Maple Leafs and Chicago Black Hawks and won a Stanley Cup with the Leafs in 1949.', ' He died in Sidney, British Columbia in November 2009.'], ['Edward Albert Arthur Woodward, OBE (1 June 1930 – 16 November 2009) was an English actor and singer.'], ['Cheikh El Avia Ould Mohamed Khouna (born 1956) is a Mauritanian political figure.', \" He was the 7th Prime Minister of Mauritania from January 2, 1996 to December 18, 1997, Minister of Foreign Affairs from July 12, 1998 to November 16, 1998, and Prime Minister again from November 16, 1998 to July 6, 2003 under President Maaouya Ould Sid'Ahmed Taya; later, he briefly served as Minister of Foreign Affairs again in 2008.\"], ['The Tornado outbreak of November 16–18, 2015 was a highly unusual nocturnal late-season tornado outbreak that significantly impacted the lower Great Plains on November\\xa016 before producing additional weaker tornadoes across parts of the Southern United States the following two days.', ' The first day of the outbreak spawned multiple strong, long-track tornadoes, including two consecutive EF3s that caused major damage near Pampa, Texas.', ' Overall, the outbreak produced 61\\xa0tornadoes in all, and was described as by the National Weather Service office in Dodge City, Kansas as being \"unprecedented in recorded history for southwest Kansas.\"', ' Despite spawning multiple strong tornadoes after dark, no fatalities and only one minor injury occurred as a result of the outbreak.'], ['Whodunnit?', ' was a British television game show that originally aired on ITV as a pilot on 15 August 1972 hosted by Shaw Taylor and then as a full series from 25 June 1973 to 26 June 1978 first hosted by Edward Woodward in 1973 and then hosted by Jon Pertwee from 1974 to 1978.'], ['The First Cabinet of Donald Tusk was the government of Poland from November 16, 2007 to November 18, 2011 sitting in the Council of Ministers during the 6th legislature of the Sejm and the 7th legislature of the Senate.', ' It was appointed by President Lech Kaczyński on November 16, 2007, and passed the vote of confidence in Sejm on November 24, 2007.', \" Led by the centre-right politician Donald Tusk it was supported by the coalition of two parties: the liberal conservative Civic Platform (PO) and the agrarian Polish People's Party (PSL).\"], [\"The Maranhão gubernatorial election of 1994 was held in the Brazilian state of Maranhão on October 3, alongside Brazil's general elections, with a second round on November 16.\", ' Liberal Front Party (PFL) candidate Roseana Sarney was elected on November 16, 1994.'], ['Clark Van Galder (February 6, 1909 – November 16, 1965) was an American football, basketball player, track athlete, and coach.', ' He served as the head football coach at La Crosse State Teachers, now University of Wisconsin–La Crosse, from 1948 to 1951 and at Fresno State College, now California State University, Fresno, from 1952 to 1958, compiling a career college football record of 77–27–3.', ' Van Galder died on November 16, 1965 after collapsing at a banquet in Madison, Wisconsin.', ' He had five sons, the fourth of which, Tim, played football as a quarterback at Iowa State University and then in the National Football League (NFL) with the New York Jets and St. Louis Cardinals.'], ['James Fraser Mustard, {\\'1\\': \", \\'2\\': \", \\'3\\': \", \\'4\\': \"} (October 16, 1927 – November 16, 2011) was a Canadian doctor and renowned researcher in early childhood development.', ' Born, raised and educated in Toronto, Ontario, Mustard began his career as a research fellow at the University of Toronto where he studied the effects of blood lipids, their relation to heart disease and how Aspirin could mitigate those effects.', ' He published the first clinical trial showing that aspirin could prevent heart attacks and strokes.', \" In 1966, he was one of the founding faculty members at McMaster University's newly established medical school.\", ' He was the Dean of the Faculty of Health Sciences and the medical school at McMaster University from 1972-1982.', ' In 1982, he helped found the Canadian Institute for Advanced Research and served as its founding president, serving until 1996.', ' He wrote several papers and studies on early childhood development, including a report used by the Ontario Government that helped create a province-wide full-day kindergarten program.', \" He won many awards including being made a companion of the Order of Canada – the order's highest level – and was inducted into the Canadian Medical Hall of Fame.\", ' He died November 16th, 2011.']]})"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "trainset, valset, testset = load_datasets()\n",
    "trainset[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "query: Which host of Whodunnit died on November 16, 2009?\n",
      "output_o1: AnswerData(reasoning='Edward Woodward died on 16 November 2009.', answer='Edward Woodward')\n",
      "output_deepseek_r1: AnswerData(reasoning=\"The question asks which host of 'Whodunnit?' died on November 16, 2009. From the context, the UK series (1973–1978) had hosts Edward Woodward (1973) and Jon Pertwee (1974–1978). The US version (1979) was hosted by Ed McMahon. Jon Pertwee died in 1996, Ed McMahon in 2009 (June 23), and Edward Woodward died on November 16, 2009, making him the correct answer.\", answer='Edward Woodward')\n",
      "answer: Edward Woodward\n"
     ]
    }
   ],
   "source": [
    "# test on one using gpt o1 and deepseek r1\n",
    "\n",
    "rag_o1 = VanillaRAG(**gpt_o1_model)\n",
    "rag_deepseek_r1 = VanillaRAG(**deepseek_r1_model)\n",
    "\n",
    "query = trainset[0].question\n",
    "output_o1 = rag_o1.bicall(query)\n",
    "output_deepseek_r1 = rag_deepseek_r1.bicall(query)\n",
    "\n",
    "print(f\"query: {query}\")\n",
    "print(f\"output_o1: {output_o1.data}\")\n",
    "print(f\"output_deepseek_r1: {output_deepseek_r1.data}\")\n",
    "print(f\"answer: {trainset[0].answer}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## AdalComponent to manage training and evaluation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "from adalflow.eval.answer_match_acc import AnswerMatchAcc\n",
    "from adalflow.datasets.types import HotPotQAData\n",
    "\n",
    "from typing import Dict, Tuple, Callable, Any\n",
    "\n",
    "\n",
    "class HotPotQAAdal(adal.AdalComponent):\n",
    "    def __init__(\n",
    "        self,\n",
    "        backward_engine_model_config: Dict | None = None,\n",
    "        teacher_model_config: Dict | None = None,\n",
    "        text_optimizer_model_config: Dict | None = None,\n",
    "        task: adal.Component | None = None,  # initialized task\n",
    "    ):\n",
    "\n",
    "        eval_fn = AnswerMatchAcc(type=\"exact_match\").compute_single_item\n",
    "        loss_eval_fn = AnswerMatchAcc(type=\"f1_score\").compute_single_item\n",
    "\n",
    "        loss_fn = adal.EvalFnToTextLoss(\n",
    "            eval_fn=loss_eval_fn,\n",
    "            eval_fn_desc=\"exact_match: 1 if str(y_gt) == str(y) else 0\",\n",
    "        )\n",
    "        super().__init__(\n",
    "            task=task,\n",
    "            eval_fn=eval_fn,\n",
    "            loss_eval_fn=loss_eval_fn,\n",
    "            loss_fn=loss_fn,\n",
    "            backward_engine_model_config=backward_engine_model_config,\n",
    "            teacher_model_config=teacher_model_config,\n",
    "            text_optimizer_model_config=text_optimizer_model_config,\n",
    "        )\n",
    "\n",
    "    def prepare_task(self, sample: HotPotQAData) -> Tuple[Callable[..., Any], Dict]:\n",
    "        if self.task.training:\n",
    "            return self.task.forward, {\"question\": sample.question, \"id\": sample.id}\n",
    "        else:\n",
    "            return self.task.call, {\"question\": sample.question, \"id\": sample.id}\n",
    "\n",
    "    def prepare_eval(self, sample: HotPotQAData, y_pred: adal.GeneratorOutput) -> float:\n",
    "        y_label = \"\"\n",
    "        if y_pred and y_pred.data and y_pred.data.answer:\n",
    "            y_label = y_pred.data.answer  # .lower()\n",
    "        # printc(f\"y_label: {y_label}, y_gt: {sample.answer}\")\n",
    "        return self.eval_fn, {\"y\": y_label, \"y_gt\": sample.answer}\n",
    "\n",
    "    def prepare_loss_eval(self, sample: Any, y_pred: Any, *args, **kwargs) -> float:\n",
    "        y_label = \"\"\n",
    "        if y_pred and y_pred.data and y_pred.data.answer:\n",
    "            y_label = y_pred.data.answer\n",
    "        return self.loss_eval_fn, {\"y\": y_label, \"y_gt\": sample.answer}\n",
    "\n",
    "    def prepare_loss(self, sample: HotPotQAData, pred: adal.Parameter):\n",
    "        y_gt = adal.Parameter(\n",
    "            name=\"y_gt\",\n",
    "            data=sample.answer,\n",
    "            eval_input=sample.answer,\n",
    "            requires_opt=False,\n",
    "        )\n",
    "\n",
    "        pred.eval_input = (\n",
    "            pred.data.data.answer\n",
    "            if pred.data and pred.data.data and pred.data.data.answer\n",
    "            else \"\"\n",
    "        )\n",
    "        # TODO: understand better of the goal of gt and input\n",
    "        return self.loss_fn, {\n",
    "            \"kwargs\": {\"y\": pred, \"y_gt\": y_gt},\n",
    "            \"input\": {\"question\": sample.question},\n",
    "            \"gt\": sample.answer,\n",
    "            \"id\": sample.id,\n",
    "        }"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Evaluation only"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "def train_diagnose(model_client, model_kwargs):\n",
    "\n",
    "    _, _, testset = load_datasets()\n",
    "\n",
    "    task = VanillaRAG(\n",
    "        model_client=model_client,\n",
    "        model_kwargs=model_kwargs,\n",
    "        passages_per_hop=3,\n",
    "    )\n",
    "\n",
    "    adal_component = HotPotQAAdal(\n",
    "        task=task,\n",
    "    )\n",
    "    trainer = adal.Trainer(adaltask=adal_component)\n",
    "    trainer.diagnose(dataset=testset, split=\"train\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'gpt_o1_model' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "Cell \u001b[0;32mIn[21], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m train_diagnose(\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m\u001b[43mgpt_o1_model\u001b[49m) \u001b[38;5;66;03m#2m11s without cache #57% on trainm 49% on test\u001b[39;00m\n",
      "\u001b[0;31mNameError\u001b[0m: name 'gpt_o1_model' is not defined"
     ]
    }
   ],
   "source": [
    "train_diagnose(**gpt_o1_model)  # 2m11s without cache #57% on trainm 49% on test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "split_csv_path: /Users/liyin/.adalflow/cache_datasets/hotpot_qa_dev_titles/train.json\n",
      "split_csv_path: /Users/liyin/.adalflow/cache_datasets/hotpot_qa_dev_titles/val.json\n",
      "split_csv_path: /Users/liyin/.adalflow/cache_datasets/hotpot_qa_dev_titles/test.json\n",
      "trainset, valset: 100, 100, example: HotPotQAData(id='5a7cc25d5542990527d55520', question='Which host of Whodunnit died on November 16, 2009?', answer='Edward Woodward', gold_titles={'Edward Woodward', 'Whodunnit? (UK TV series)'}, context={'title': ['Cyclone Tia', 'Harry Taylor (ice hockey)', 'Edward Woodward', 'Cheikh El Avia Ould Mohamed Khouna', 'Tornado outbreak of November 16–18, 2015', 'Whodunnit? (UK TV series)', 'First Cabinet of Donald Tusk', 'Maranhão gubernatorial election, 1994', 'Clark Van Galder', 'James Fraser Mustard'], 'sentences': [['Severe Tropical Cyclone Tia was the first of six tropical cyclones to affect Vanuatu, during the 1991–92 South Pacific cyclone season.', ' The system was first noted within the South Pacific convergence zone as a small tropical depression on November 13, to the northeast of the Solomon Islands.', ' Over the next few days the system gradually developed further within an area of light winds in the upper troposphere, before it was named Tia early on November 16.', ' Later that day due to a developing northerly steering current, the system slowed down and undertook a small anticlockwise loop before starting to move towards the southwest and rapidly intensify.', ' After rapidly intensifying throughout November 16 and 17, Tia passed within 55 km of the Solomon Island: Anuta at around 1800 UTC on November 17, before passing near Tikopia Island six hours later.', ' As Tia moved near Tikopia, the system reached its peak intensity as a category 3 severe tropical cyclone, with 10‑minute sustained windspeeds of 140 km/h .'], ['Harold Taylor (March 28, 1926 – November 16, 2009) was a professional ice hockey player who played 66 games in the National Hockey League.', ' Born in St. James, Manitoba, he played with the Toronto Maple Leafs and Chicago Black Hawks and won a Stanley Cup with the Leafs in 1949.', ' He died in Sidney, British Columbia in November 2009.'], ['Edward Albert Arthur Woodward, OBE (1 June 1930 – 16 November 2009) was an English actor and singer.'], ['Cheikh El Avia Ould Mohamed Khouna (born 1956) is a Mauritanian political figure.', \" He was the 7th Prime Minister of Mauritania from January 2, 1996 to December 18, 1997, Minister of Foreign Affairs from July 12, 1998 to November 16, 1998, and Prime Minister again from November 16, 1998 to July 6, 2003 under President Maaouya Ould Sid'Ahmed Taya; later, he briefly served as Minister of Foreign Affairs again in 2008.\"], ['The Tornado outbreak of November 16–18, 2015 was a highly unusual nocturnal late-season tornado outbreak that significantly impacted the lower Great Plains on November\\xa016 before producing additional weaker tornadoes across parts of the Southern United States the following two days.', ' The first day of the outbreak spawned multiple strong, long-track tornadoes, including two consecutive EF3s that caused major damage near Pampa, Texas.', ' Overall, the outbreak produced 61\\xa0tornadoes in all, and was described as by the National Weather Service office in Dodge City, Kansas as being \"unprecedented in recorded history for southwest Kansas.\"', ' Despite spawning multiple strong tornadoes after dark, no fatalities and only one minor injury occurred as a result of the outbreak.'], ['Whodunnit?', ' was a British television game show that originally aired on ITV as a pilot on 15 August 1972 hosted by Shaw Taylor and then as a full series from 25 June 1973 to 26 June 1978 first hosted by Edward Woodward in 1973 and then hosted by Jon Pertwee from 1974 to 1978.'], ['The First Cabinet of Donald Tusk was the government of Poland from November 16, 2007 to November 18, 2011 sitting in the Council of Ministers during the 6th legislature of the Sejm and the 7th legislature of the Senate.', ' It was appointed by President Lech Kaczyński on November 16, 2007, and passed the vote of confidence in Sejm on November 24, 2007.', \" Led by the centre-right politician Donald Tusk it was supported by the coalition of two parties: the liberal conservative Civic Platform (PO) and the agrarian Polish People's Party (PSL).\"], [\"The Maranhão gubernatorial election of 1994 was held in the Brazilian state of Maranhão on October 3, alongside Brazil's general elections, with a second round on November 16.\", ' Liberal Front Party (PFL) candidate Roseana Sarney was elected on November 16, 1994.'], ['Clark Van Galder (February 6, 1909 – November 16, 1965) was an American football, basketball player, track athlete, and coach.', ' He served as the head football coach at La Crosse State Teachers, now University of Wisconsin–La Crosse, from 1948 to 1951 and at Fresno State College, now California State University, Fresno, from 1952 to 1958, compiling a career college football record of 77–27–3.', ' Van Galder died on November 16, 1965 after collapsing at a banquet in Madison, Wisconsin.', ' He had five sons, the fourth of which, Tim, played football as a quarterback at Iowa State University and then in the National Football League (NFL) with the New York Jets and St. Louis Cardinals.'], ['James Fraser Mustard, {\\'1\\': \", \\'2\\': \", \\'3\\': \", \\'4\\': \"} (October 16, 1927 – November 16, 2011) was a Canadian doctor and renowned researcher in early childhood development.', ' Born, raised and educated in Toronto, Ontario, Mustard began his career as a research fellow at the University of Toronto where he studied the effects of blood lipids, their relation to heart disease and how Aspirin could mitigate those effects.', ' He published the first clinical trial showing that aspirin could prevent heart attacks and strokes.', \" In 1966, he was one of the founding faculty members at McMaster University's newly established medical school.\", ' He was the Dean of the Faculty of Health Sciences and the medical school at McMaster University from 1972-1982.', ' In 1982, he helped found the Canadian Institute for Advanced Research and served as its founding president, serving until 1996.', ' He wrote several papers and studies on early childhood development, including a report used by the Ontario Government that helped create a province-wide full-day kindergarten program.', \" He won many awards including being made a companion of the Order of Canada – the order's highest level – and was inducted into the Canadian Medical Hall of Fame.\", ' He died November 16th, 2011.']]})\n",
      "2025-02-04 21:08:04 - [trainer.py:227:diagnose] - Checkpoint path: /Users/liyin/.adalflow/ckpt/HotPotQAAdal\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Generator llm is already registered with jsonl file at /Users/liyin/.adalflow/ckpt/HotPotQAAdal/diagnose_train/llm_call.jsonl\n",
      "Loading Data: 100%|██████████| 200/200 [00:00<00:00, 86542.95it/s]\n",
      "Predicting: step(0): 1.0 across 1 samples, Max potential: 1.0:   0%|          | 0/200 [00:00<?, ?it/s]"
     ]
    }
   ],
   "source": [
    "# train_diagnose(**deepseek_r1_model)  # 34m 226s without cache #46%\n",
    "\n",
    "# r1 have some structure format issue.and it seems together hosting is slow"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "split_csv_path: /Users/liyin/.adalflow/cache_datasets/hotpot_qa_dev_titles/train.json\n",
      "split_csv_path: /Users/liyin/.adalflow/cache_datasets/hotpot_qa_dev_titles/val.json\n",
      "split_csv_path: /Users/liyin/.adalflow/cache_datasets/hotpot_qa_dev_titles/test.json\n",
      "trainset, valset: 100, 100, example: HotPotQAData(id='5a7cc25d5542990527d55520', question='Which host of Whodunnit died on November 16, 2009?', answer='Edward Woodward', gold_titles={'Edward Woodward', 'Whodunnit? (UK TV series)'}, context={'title': ['Cyclone Tia', 'Harry Taylor (ice hockey)', 'Edward Woodward', 'Cheikh El Avia Ould Mohamed Khouna', 'Tornado outbreak of November 16–18, 2015', 'Whodunnit? (UK TV series)', 'First Cabinet of Donald Tusk', 'Maranhão gubernatorial election, 1994', 'Clark Van Galder', 'James Fraser Mustard'], 'sentences': [['Severe Tropical Cyclone Tia was the first of six tropical cyclones to affect Vanuatu, during the 1991–92 South Pacific cyclone season.', ' The system was first noted within the South Pacific convergence zone as a small tropical depression on November 13, to the northeast of the Solomon Islands.', ' Over the next few days the system gradually developed further within an area of light winds in the upper troposphere, before it was named Tia early on November 16.', ' Later that day due to a developing northerly steering current, the system slowed down and undertook a small anticlockwise loop before starting to move towards the southwest and rapidly intensify.', ' After rapidly intensifying throughout November 16 and 17, Tia passed within 55 km of the Solomon Island: Anuta at around 1800 UTC on November 17, before passing near Tikopia Island six hours later.', ' As Tia moved near Tikopia, the system reached its peak intensity as a category 3 severe tropical cyclone, with 10‑minute sustained windspeeds of 140 km/h .'], ['Harold Taylor (March 28, 1926 – November 16, 2009) was a professional ice hockey player who played 66 games in the National Hockey League.', ' Born in St. James, Manitoba, he played with the Toronto Maple Leafs and Chicago Black Hawks and won a Stanley Cup with the Leafs in 1949.', ' He died in Sidney, British Columbia in November 2009.'], ['Edward Albert Arthur Woodward, OBE (1 June 1930 – 16 November 2009) was an English actor and singer.'], ['Cheikh El Avia Ould Mohamed Khouna (born 1956) is a Mauritanian political figure.', \" He was the 7th Prime Minister of Mauritania from January 2, 1996 to December 18, 1997, Minister of Foreign Affairs from July 12, 1998 to November 16, 1998, and Prime Minister again from November 16, 1998 to July 6, 2003 under President Maaouya Ould Sid'Ahmed Taya; later, he briefly served as Minister of Foreign Affairs again in 2008.\"], ['The Tornado outbreak of November 16–18, 2015 was a highly unusual nocturnal late-season tornado outbreak that significantly impacted the lower Great Plains on November\\xa016 before producing additional weaker tornadoes across parts of the Southern United States the following two days.', ' The first day of the outbreak spawned multiple strong, long-track tornadoes, including two consecutive EF3s that caused major damage near Pampa, Texas.', ' Overall, the outbreak produced 61\\xa0tornadoes in all, and was described as by the National Weather Service office in Dodge City, Kansas as being \"unprecedented in recorded history for southwest Kansas.\"', ' Despite spawning multiple strong tornadoes after dark, no fatalities and only one minor injury occurred as a result of the outbreak.'], ['Whodunnit?', ' was a British television game show that originally aired on ITV as a pilot on 15 August 1972 hosted by Shaw Taylor and then as a full series from 25 June 1973 to 26 June 1978 first hosted by Edward Woodward in 1973 and then hosted by Jon Pertwee from 1974 to 1978.'], ['The First Cabinet of Donald Tusk was the government of Poland from November 16, 2007 to November 18, 2011 sitting in the Council of Ministers during the 6th legislature of the Sejm and the 7th legislature of the Senate.', ' It was appointed by President Lech Kaczyński on November 16, 2007, and passed the vote of confidence in Sejm on November 24, 2007.', \" Led by the centre-right politician Donald Tusk it was supported by the coalition of two parties: the liberal conservative Civic Platform (PO) and the agrarian Polish People's Party (PSL).\"], [\"The Maranhão gubernatorial election of 1994 was held in the Brazilian state of Maranhão on October 3, alongside Brazil's general elections, with a second round on November 16.\", ' Liberal Front Party (PFL) candidate Roseana Sarney was elected on November 16, 1994.'], ['Clark Van Galder (February 6, 1909 – November 16, 1965) was an American football, basketball player, track athlete, and coach.', ' He served as the head football coach at La Crosse State Teachers, now University of Wisconsin–La Crosse, from 1948 to 1951 and at Fresno State College, now California State University, Fresno, from 1952 to 1958, compiling a career college football record of 77–27–3.', ' Van Galder died on November 16, 1965 after collapsing at a banquet in Madison, Wisconsin.', ' He had five sons, the fourth of which, Tim, played football as a quarterback at Iowa State University and then in the National Football League (NFL) with the New York Jets and St. Louis Cardinals.'], ['James Fraser Mustard, {\\'1\\': \", \\'2\\': \", \\'3\\': \", \\'4\\': \"} (October 16, 1927 – November 16, 2011) was a Canadian doctor and renowned researcher in early childhood development.', ' Born, raised and educated in Toronto, Ontario, Mustard began his career as a research fellow at the University of Toronto where he studied the effects of blood lipids, their relation to heart disease and how Aspirin could mitigate those effects.', ' He published the first clinical trial showing that aspirin could prevent heart attacks and strokes.', \" In 1966, he was one of the founding faculty members at McMaster University's newly established medical school.\", ' He was the Dean of the Faculty of Health Sciences and the medical school at McMaster University from 1972-1982.', ' In 1982, he helped found the Canadian Institute for Advanced Research and served as its founding president, serving until 1996.', ' He wrote several papers and studies on early childhood development, including a report used by the Ontario Government that helped create a province-wide full-day kindergarten program.', \" He won many awards including being made a companion of the Order of Canada – the order's highest level – and was inducted into the Canadian Medical Hall of Fame.\", ' He died November 16th, 2011.']]})\n",
      "2025-02-04 16:22:52 - [trainer.py:227:diagnose] - Checkpoint path: /Users/liyin/.adalflow/ckpt/HotPotQAAdal\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Generator llm is already registered with jsonl file at /Users/liyin/.adalflow/ckpt/HotPotQAAdal/diagnose_train/llm_call.jsonl\n",
      "\n",
      "Loading Data: 100%|██████████| 200/200 [00:00<00:00, 84400.93it/s]\n",
      "Predicting: step(0): 0.1818 across 11 samples, Max potential: 0.955:   5%|▌         | 10/200 [00:17<07:19,  2.31s/it]Error at parsing output: Error: No JSON object or array found in the text: <think>\n",
      "Okay, so I need to figure out which comic book was also written by the writer of Crossed. Let's start by looking at the context provided. \n",
      "\n",
      "First, there are three different entries here: Crossed (comics), Crossed (novel), and Star Crossed (comics). \n",
      "\n",
      "The question is about the comic book written by the same writer as Crossed. So I'm focusing on Crossed (comics), which is written by Garth Ennis, and then later by David Lapham for some volumes. \n",
      "\n",
      "Now, looking at the other entries, Star Crossed is a comic book mini-series written by Matt Howarth. Crossed (novel) is written by Allyson Braithwaite Condie. \n",
      "\n",
      "Since the question is about a comic book, the novel can be ruled out. The user is asking which comic, besides Crossed, shares the same writer. The key is to see if any other comic in the context has the same writer as Crossed. \n",
      "\n",
      "Wait, the context for Crossed (comics) mentions that Garth Ennis wrote the first ten issues. Then, other volumes like \"Crossed: Family Values\", \"Crossed 3D\", etc., were written by David Lapham. There's also a new series called \"Crossed: Badlands\" with rotating teams.\n",
      "\n",
      "So, the other comic books related to Crossed are the various volumes and series under the same franchise, like Family Values, 3D, Psychopath, Badlands, and the webcomics. Since they are all part of the Crossed franchise, they are written by different writers, but all are connected to the original Crossed comic.\n",
      "\n",
      "However, the question is asking for another comic book that was also written by the writer of Crossed. From the given context, the writer of Crossed is Garth Ennis. Are there other comics listed here written by him? The other comic mentioned is Star Crossed, but that's by Matt Howarth, not Ennis. \n",
      "\n",
      "Wait, no, the context only lists these three, so the only other comics are part of the Crossed series or Star Crossed, which is a separate comic. Since the question is about another comic, besides Crossed, that the same writer wrote, but the context doesn't list any. \n",
      "\n",
      "Alternatively, perhaps the user is considering that Crossed itself has various volumes and series. So, the answer might be the other series within the Crossed franchise, which were also written by different writers but are part of the same comic book series.\n",
      "\n",
      "Wait, but the question is about a comic book that was also written by the writer of Crossed. The writer of Crossed is Garth Ennis, but the other volumes like \"Family Values\" are written by David Lapham. So, those are different writers.\n",
      "\n",
      "Alternatively, perhaps the user is asking within the Crossed franchise. So, the answer would be the other Crossed volumes, but they have different writers.\n",
      "\n",
      "Wait, the initial question is: \"Which comic book was also written by the writer of Crossed?\"\n",
      "\n",
      "But according to the context, Crossed (comics) is written by Garth Ennis initially, then by David Lapham. So, the other comic books in the same franchise are \"Crossed: Family Values\", \"Crossed 3D\", etc., but they are not written by Ennis.\n",
      "\n",
      "So, perhaps the answer is that there are other comics in the Crossed series, but written by different writers. Or perhaps the answer is that the same writer wrote only Crossed.\n",
      "\n",
      "Wait, but the context doesn't mention any other comic books by the same writer, except those under the Crossed franchise. So, the answer would be that the writer of Crossed (Garth Ennis) wrote the initial 10 issues, and then other writers took over. So, the other comic books in the Crossed series were written by different authors.\n",
      "\n",
      "But the user is asking for a comic book that was also written by the writer of Crossed, so perhaps the answer is that the same writer wrote other parts of Crossed, but not another separate comic.\n",
      "\n",
      "Alternatively, perhaps the user is confusing the different entries. For example, the novel is by Allyson Braithwaite Condie, which is not a comic, so that's out.\n",
      "\n",
      "So, in the context provided, the only comic books written by the same writer as Crossed are the various Crossed series, but they have different writers. Therefore, the answer would be that the same writer, Garth Ennis, wrote the first ten issues, but other Crossed volumes are by different writers.\n",
      "\n",
      "But the question is about a different comic book, not part of the same series. So, the answer might be that there's no other comic book mentioned in the context written by the same writer as Crossed (i.e., Garth Ennis besides the Crossed series).\n",
      "\n",
      "Wait, but perhaps the user is asking which other comic was written by the writer of Crossed, meaning within the context, the answer would be the Crossed volumes, but they are part of the same series. Alternatively, maybe the user is considering that the writer of Crossed (the novel) also wrote another comic, but that's not the case.\n",
      "\n",
      "Wait, the user's context includes three different entries: the Crossed comic, the Crossed novel, and Star Crossed comic. The question is which comic book was also written by the writer of Crossed. Since the Crossed comic's writer is Garth Ennis, and the other comics are by different writers, the answer would be that there isn't another comic book in the context written by the same writer.\n",
      "\n",
      "But that doesn't make sense because the user is asking for an answer, so maybe I'm missing something.\n",
      "\n",
      "Wait, maybe the user is considering that the writer of the Crossed novel is Allyson Condie, so perhaps she wrote a comic book, but no, the novel is her work.\n",
      "\n",
      "Alternatively, perhaps the answer is that the writer of Crossed (comic) wrote other Crossed series, but that's part of the same franchise.\n",
      "\n",
      "Wait, perhaps the user is asking which comic book in the list was also written by the writer of Crossed. So, looking at the three entries, Crossed (comics) is written by Garth Ennis and others, Star Crossed is by Matt Howarth, and Crossed (novel) is by Allyson Condie. So, the answer is that the writer of Crossed (comic) is Garth Ennis, and the other comics in the Crossed series are part of the same franchise but written by different writers.\n",
      "\n",
      "Therefore, the answer is that the same writer didn't write another separate comic book in the provided context. Wait, but the user is asking, so the answer might be that there are other Crossed comics, but written by different writers.\n",
      "\n",
      "Wait, perhaps the answer is that \"Crossed: Family Values\" was written by David Lapham, who also wrote other Crossed series. But that's part of the same Crossed franchise, not a separate comic.\n",
      "\n",
      "I'm getting confused. Let me try to parse this again.\n",
      "\n",
      "The user provided context with three entries:\n",
      "\n",
      "1. Crossed (comics) - written by Garth Ennis and others.\n",
      "2. Crossed (novel) - written by Allyson Braithwaite Condie.\n",
      "3. Star Crossed (comics) - written by Matt Howarth.\n",
      "\n",
      "The question is asking: Which comic book was also written by the writer of Crossed?\n",
      "\n",
      "So, the writer of Crossed (the comic) is Garth Ennis. Now, looking through the context, are there any other comics written by Garth Ennis besides Crossed? The context only mentions Crossed and its various series, and Star Crossed, which is by Matt Howarth.\n",
      "\n",
      "So, the only comic written by Garth Ennis is Crossed. Therefore, there isn't another comic book in the context that was written by the same writer.\n",
      "\n",
      "Wait, but the user might be considering that the same writer, Garth Ennis, wrote other Crossed series. So, the answer would be that the same writer wrote the initial Crossed comics, and then other series in the franchise were written by different writers. But the question is about another comic book, not part of the same series.\n",
      "\n",
      "Hmm, maybe the answer is that the same writer, Garth Ennis, didn't write another separate comic in the context, but the Crossed series itself is the one.\n",
      "\n",
      "Wait, perhaps the answer is that the writer of Crossed (comic) is Garth Ennis, and he wrote other comics outside the Crossed series, but the context doesn't mention them. But within the given context, the answer would be that he didn't write any other comics besides Crossed.\n",
      "\n",
      "Alternatively, perhaps the answer is that the writer of Crossed (the novel) wrote another comic, but she didn't; she wrote the novel.\n",
      "\n",
      "Wait, maybe I'm overcomplicating this. The answer is that the same writer wrote the other Crossed series, but the user is asking for another comic book, so perhaps \"Crossed: Family Values\" or \"Crossed: Badlands\" would be the answer, but those are part of the same Crossed franchise.\n",
      "\n",
      "Alternatively, perhaps the user is mistaken and the answer is that the writer of Crossed (the novel) wrote another comic, but that's not the case.\n",
      "\n",
      "Wait, perhaps the answer is that the writer of Crossed (comics) is Garth Ennis, and there's no other comic in the context written by him. So, the answer is that there isn't another comic book in the provided context written by the same writer as Crossed (comics). But that doesn't make sense because the question seems to expect an answer.\n",
      "\n",
      "Alternatively, perhaps the user is considering that the writer of Crossed (the comic) wrote other Crossed\n",
      "Error processing the output processors: Error: Error: No JSON object or array found in the text: <think>\n",
      "Okay, so I need to figure out which comic book was also written by the writer of Crossed. Let's start by looking at the context provided. \n",
      "\n",
      "First, there are three different entries here: Crossed (comics), Crossed (novel), and Star Crossed (comics). \n",
      "\n",
      "The question is about the comic book written by the same writer as Crossed. So I'm focusing on Crossed (comics), which is written by Garth Ennis, and then later by David Lapham for some volumes. \n",
      "\n",
      "Now, looking at the other entries, Star Crossed is a comic book mini-series written by Matt Howarth. Crossed (novel) is written by Allyson Braithwaite Condie. \n",
      "\n",
      "Since the question is about a comic book, the novel can be ruled out. The user is asking which comic, besides Crossed, shares the same writer. The key is to see if any other comic in the context has the same writer as Crossed. \n",
      "\n",
      "Wait, the context for Crossed (comics) mentions that Garth Ennis wrote the first ten issues. Then, other volumes like \"Crossed: Family Values\", \"Crossed 3D\", etc., were written by David Lapham. There's also a new series called \"Crossed: Badlands\" with rotating teams.\n",
      "\n",
      "So, the other comic books related to Crossed are the various volumes and series under the same franchise, like Family Values, 3D, Psychopath, Badlands, and the webcomics. Since they are all part of the Crossed franchise, they are written by different writers, but all are connected to the original Crossed comic.\n",
      "\n",
      "However, the question is asking for another comic book that was also written by the writer of Crossed. From the given context, the writer of Crossed is Garth Ennis. Are there other comics listed here written by him? The other comic mentioned is Star Crossed, but that's by Matt Howarth, not Ennis. \n",
      "\n",
      "Wait, no, the context only lists these three, so the only other comics are part of the Crossed series or Star Crossed, which is a separate comic. Since the question is about another comic, besides Crossed, that the same writer wrote, but the context doesn't list any. \n",
      "\n",
      "Alternatively, perhaps the user is considering that Crossed itself has various volumes and series. So, the answer might be the other series within the Crossed franchise, which were also written by different writers but are part of the same comic book series.\n",
      "\n",
      "Wait, but the question is about a comic book that was also written by the writer of Crossed. The writer of Crossed is Garth Ennis, but the other volumes like \"Family Values\" are written by David Lapham. So, those are different writers.\n",
      "\n",
      "Alternatively, perhaps the user is asking within the Crossed franchise. So, the answer would be the other Crossed volumes, but they have different writers.\n",
      "\n",
      "Wait, the initial question is: \"Which comic book was also written by the writer of Crossed?\"\n",
      "\n",
      "But according to the context, Crossed (comics) is written by Garth Ennis initially, then by David Lapham. So, the other comic books in the same franchise are \"Crossed: Family Values\", \"Crossed 3D\", etc., but they are not written by Ennis.\n",
      "\n",
      "So, perhaps the answer is that there are other comics in the Crossed series, but written by different writers. Or perhaps the answer is that the same writer wrote only Crossed.\n",
      "\n",
      "Wait, but the context doesn't mention any other comic books by the same writer, except those under the Crossed franchise. So, the answer would be that the writer of Crossed (Garth Ennis) wrote the initial 10 issues, and then other writers took over. So, the other comic books in the Crossed series were written by different authors.\n",
      "\n",
      "But the user is asking for a comic book that was also written by the writer of Crossed, so perhaps the answer is that the same writer wrote other parts of Crossed, but not another separate comic.\n",
      "\n",
      "Alternatively, perhaps the user is confusing the different entries. For example, the novel is by Allyson Braithwaite Condie, which is not a comic, so that's out.\n",
      "\n",
      "So, in the context provided, the only comic books written by the same writer as Crossed are the various Crossed series, but they have different writers. Therefore, the answer would be that the same writer, Garth Ennis, wrote the first ten issues, but other Crossed volumes are by different writers.\n",
      "\n",
      "But the question is about a different comic book, not part of the same series. So, the answer might be that there's no other comic book mentioned in the context written by the same writer as Crossed (i.e., Garth Ennis besides the Crossed series).\n",
      "\n",
      "Wait, but perhaps the user is asking which other comic was written by the writer of Crossed, meaning within the context, the answer would be the Crossed volumes, but they are part of the same series. Alternatively, maybe the user is considering that the writer of Crossed (the novel) also wrote another comic, but that's not the case.\n",
      "\n",
      "Wait, the user's context includes three different entries: the Crossed comic, the Crossed novel, and Star Crossed comic. The question is which comic book was also written by the writer of Crossed. Since the Crossed comic's writer is Garth Ennis, and the other comics are by different writers, the answer would be that there isn't another comic book in the context written by the same writer.\n",
      "\n",
      "But that doesn't make sense because the user is asking for an answer, so maybe I'm missing something.\n",
      "\n",
      "Wait, maybe the user is considering that the writer of the Crossed novel is Allyson Condie, so perhaps she wrote a comic book, but no, the novel is her work.\n",
      "\n",
      "Alternatively, perhaps the answer is that the writer of Crossed (comic) wrote other Crossed series, but that's part of the same franchise.\n",
      "\n",
      "Wait, perhaps the user is asking which comic book in the list was also written by the writer of Crossed. So, looking at the three entries, Crossed (comics) is written by Garth Ennis and others, Star Crossed is by Matt Howarth, and Crossed (novel) is by Allyson Condie. So, the answer is that the writer of Crossed (comic) is Garth Ennis, and the other comics in the Crossed series are part of the same franchise but written by different writers.\n",
      "\n",
      "Therefore, the answer is that the same writer didn't write another separate comic book in the provided context. Wait, but the user is asking, so the answer might be that there are other Crossed comics, but written by different writers.\n",
      "\n",
      "Wait, perhaps the answer is that \"Crossed: Family Values\" was written by David Lapham, who also wrote other Crossed series. But that's part of the same Crossed franchise, not a separate comic.\n",
      "\n",
      "I'm getting confused. Let me try to parse this again.\n",
      "\n",
      "The user provided context with three entries:\n",
      "\n",
      "1. Crossed (comics) - written by Garth Ennis and others.\n",
      "2. Crossed (novel) - written by Allyson Braithwaite Condie.\n",
      "3. Star Crossed (comics) - written by Matt Howarth.\n",
      "\n",
      "The question is asking: Which comic book was also written by the writer of Crossed?\n",
      "\n",
      "So, the writer of Crossed (the comic) is Garth Ennis. Now, looking through the context, are there any other comics written by Garth Ennis besides Crossed? The context only mentions Crossed and its various series, and Star Crossed, which is by Matt Howarth.\n",
      "\n",
      "So, the only comic written by Garth Ennis is Crossed. Therefore, there isn't another comic book in the context that was written by the same writer.\n",
      "\n",
      "Wait, but the user might be considering that the same writer, Garth Ennis, wrote other Crossed series. So, the answer would be that the same writer wrote the initial Crossed comics, and then other series in the franchise were written by different writers. But the question is about another comic book, not part of the same series.\n",
      "\n",
      "Hmm, maybe the answer is that the same writer, Garth Ennis, didn't write another separate comic in the context, but the Crossed series itself is the one.\n",
      "\n",
      "Wait, perhaps the answer is that the writer of Crossed (comic) is Garth Ennis, and he wrote other comics outside the Crossed series, but the context doesn't mention them. But within the given context, the answer would be that he didn't write any other comics besides Crossed.\n",
      "\n",
      "Alternatively, perhaps the answer is that the writer of Crossed (the novel) wrote another comic, but she didn't; she wrote the novel.\n",
      "\n",
      "Wait, maybe I'm overcomplicating this. The answer is that the same writer wrote the other Crossed series, but the user is asking for another comic book, so perhaps \"Crossed: Family Values\" or \"Crossed: Badlands\" would be the answer, but those are part of the same Crossed franchise.\n",
      "\n",
      "Alternatively, perhaps the user is mistaken and the answer is that the writer of Crossed (the novel) wrote another comic, but that's not the case.\n",
      "\n",
      "Wait, perhaps the answer is that the writer of Crossed (comics) is Garth Ennis, and there's no other comic in the context written by him. So, the answer is that there isn't another comic book in the provided context written by the same writer as Crossed (comics). But that doesn't make sense because the question seems to expect an answer.\n",
      "\n",
      "Alternatively, perhaps the user is considering that the writer of Crossed (the comic) wrote other Crossed\n",
      "Predicting: step(0): 0.4087 across 115 samples, Max potential: 0.66:  57%|█████▊    | 115/200 [02:43<01:23,  1.01it/s] Error at parsing output: Error: No JSON object or array found in the text: <think>\n",
      "Okay, so I need to figure out which actor from the web series Red Bird is also known for a character in Seinfeld. Let me break this down step by step.\n",
      "\n",
      "First, I'll look at the context provided for Red Bird. It's an American Western web series that premiered in March 2016 on YouTube and their website. The main actors listed are Alexandra Goodman, Ian Stark, Armin Shimerman, Kitty Swink, Mike McShane, and John Prosky. \n",
      "\n",
      "Next, I need to see which of these actors have a connection to Seinfeld. I'll go through each actor one by one.\n",
      "\n",
      "1. Alexandra Goodman: I don't have any information here that links her to Seinfeld.\n",
      "2. Ian Stark: No info provided about him being in Seinfeld.\n",
      "3. Armin Shimerman: I know he's a well-known actor, especially for his role as Quark in Star Trek: Deep Space Nine, but I don't see a mention of Seinfeld here.\n",
      "4. Kitty Swink: No info about her in Seinfeld.\n",
      "5. Mike McShane: Also doesn't seem to be connected to Seinfeld based on the context given.\n",
      "6. John Prosky: No mention of him being in Seinfeld either.\n",
      "\n",
      "Wait a minute, the context also includes sections on Len Lesser and Richard Fancy. Let me check those since they might be relevant.\n",
      "\n",
      "Looking at Len Lesser, he was known for his recurring role as Uncle Leo in Seinfeld. That's a direct connection. But is he part of Red Bird? The Red Bird context lists the main actors, and Len Lesser isn't among them. So he's not the answer here.\n",
      "\n",
      "Now, checking Richard Fancy: He played Mr. Lippman in Seinfeld, Elaine's boss. So that's another actor with a Seinfeld connection. But again, is he in Red Bird? The main cast doesn't list him, so he's probably not the one.\n",
      "\n",
      "Hmm, maybe I missed something. Let me recheck the main actors in Red Bird. Armin Shimerman, Kitty Swink, Mike McShane, John Prosky, Ian Stark, and Alexandra Goodman. None of these names ring a bell in relation to Seinfeld based on the given information. \n",
      "\n",
      "Wait, perhaps I'm misunderstanding. Maybe one of the listed actors in Red Bird is known for a role in Seinfeld, but their Seinfeld role isn't mentioned here. However, based solely on the provided context, the Seinfeld connections are Len Lesser as Uncle Leo and Richard Fancy as Mr. Lippman. Since neither are listed in the Red Bird cast, maybe the answer lies elsewhere.\n",
      "\n",
      "Wait, perhaps the question is pointing towards someone else. Let me think again. Maybe I need to check the actors in Red Bird again. Is there any chance that one of them is known for a Seinfeld role not mentioned in the context? For example, Armin Shimerman was in Star Trek, but not Seinfeld as far as I know.\n",
      "\n",
      "Wait, the user might be looking for someone else. Let me see... Oh, wait! The context includes Len Lesser and Richard Fancy, but they're not in Red Bird. So perhaps the answer is that none of the Red Bird actors are known for Seinfeld roles, but that seems unlikely because the question states that one is. Maybe I'm missing something.\n",
      "\n",
      "Wait, perhaps I need to look again. The Red Bird cast includes Kitty Swink. Could she have a role in Seinfeld? The context doesn't mention it, but I might not have all the info. Alternatively, maybe it's a mistake in the context. Wait, no, the context doesn't link any of the Red Bird actors to Seinfeld.\n",
      "\n",
      "Wait, perhaps the user included Len Lesser and Richard Fancy as part of the context, thinking that they are in Red Bird. But looking back, the context starts with Red Bird, then has separate sections on Len Lesser and Richard Fancy. So they are separate. So the web series Red Bird has its own cast, and the other sections are about different people.\n",
      "\n",
      "So the answer would be that none of the main cast of Red Bird are known for Seinfeld roles. But the question says that one is, so perhaps I'm missing something. Wait, maybe I need to check the user's question again.\n",
      "\n",
      "Wait, the question is: \"One of the actors from the web series Red Bird is also known for what character in the popular television show Seinfeld?\"\n",
      "\n",
      "Given that, I need to see if any Red Bird actor is known for a Seinfeld role. From the context, the actors in Red Bird are: Alexandra Goodman, Ian Stark, Armin Shimerman, Kitty Swink, Mike McShane, and John Prosky.\n",
      "\n",
      "Looking at their names, none of them are mentioned in the Seinfeld sections (Len Lesser and Richard Fancy). So perhaps the answer is that none of them are known for Seinfeld roles. But the question implies that one is, so maybe I need to look again.\n",
      "\n",
      "Wait, maybe I'm misunderstanding the structure. The context has Red Bird, then Len Lesser, then Richard Fancy. So the user is providing context about three different entities: the series and two actors. So perhaps the question is asking about the actors in the context, not necessarily in Red Bird.\n",
      "\n",
      "Wait, that would make more sense. So the question is asking, among the actors provided in the context (including Len Lesser and Richard Fancy), which one is known for a Seinfeld character and is also in Red Bird.\n",
      "\n",
      "But looking back, Len Lesser is known for Uncle Leo in Seinfeld, but he's not listed as part of Red Bird's cast. Richard Fancy is known for Mr. Lippman in Seinfeld, but he's also not in Red Bird's cast. So that leaves the question without an answer based on the given context.\n",
      "\n",
      "Wait, but the question specifically says \"One of the actors from the web series Red Bird,\" so it must be someone from that list. Maybe I missed something in the context. Let me check again.\n",
      "\n",
      "Wait, perhaps Armin Shimerman is the connection. He's in Red Bird, and he's known for Star Trek, but not Seinfeld. Kitty Swink is also known for her role as Christina Pickles' partner, but not Seinfeld.\n",
      "\n",
      "Wait, maybe it's John Prosky. I'm not familiar with him in Seinfeld. Mike McShane? No. So perhaps the answer is that none of the Red Bird actors are known for Seinfeld, but the question says one is. Maybe I'm missing something.\n",
      "\n",
      "Alternatively, perhaps the user made a mistake in the context. Maybe one of the actors in Red Bird is indeed known for Seinfeld, but it's not mentioned here. But based on the provided info, I can't conclude that.\n",
      "\n",
      "Wait, perhaps the answer is Richard Fancy, but he's not in Red Bird. Similarly, Len Lesser is not in Red Bird. So I'm confused. Maybe the question is incorrect, or perhaps I'm misinterpreting.\n",
      "\n",
      "Wait, perhaps the question is asking which actor in the entire context, not necessarily from Red Bird, is known for Seinfeld. But no, the question specifies from Red Bird.\n",
      "\n",
      "I think I've reached the limit of my understanding. Based on the context, none of the Red Bird actors are known for Seinfeld roles as per the given info. Therefore, the answer might be that there isn't such an actor, but the question suggests there is. Maybe I need to check the context again.\n",
      "\n",
      "Wait, perhaps the user included the info about Len Lesser and Richard Fancy to suggest that they are in Red Bird, but looking back, the context clearly separates them. So they are separate.\n",
      "\n",
      "In conclusion, based on the given context, none of the Red Bird actors are known for Seinfeld roles. But the question implies that one is, so perhaps I'm missing something. Maybe the answer is that there's no such actor, but that contradicts the question. Alternatively, maybe the answer is Richard Fancy, but he's not in Red Bird.\n",
      "\n",
      "Wait, perhaps I made a mistake. Let me check the context again. The Red Bird cast is listed, and then separately, Len Lesser and Richard Fancy are described. So perhaps the question is asking about the actors in the entire context, not just the Red Bird series. That would make sense. So the answer would be Richard Fancy, as he's in Seinfeld, even though he's not in Red Bird.\n",
      "\n",
      "But wait, the question specifically says \"from the web series Red Bird,\" so I think it's only about the actors in Red Bird. Therefore, based on the context, no one fits that. But since the question says one does, maybe the user included the wrong context. Alternatively, perhaps I'm supposed to infer that Richard Fancy is in Red Bird, but the context doesn't say that.\n",
      "\n",
      "I'm stuck. I think the answer is that Richard Fancy is known for Mr. Lippman in Seinfeld, but he's not in Red Bird based on the provided context. Alternatively, Len Lesser is known for Uncle Leo, but he's not in Red Bird either. Therefore, based on the given context, the answer would be that there is no actor from Red Bird known for Seinfeld. But that contradicts the question's premise.\n",
      "\n",
      "I'm probably missing something. Maybe the user intended that Richard Fancy is in Red Bird, but it's not stated. Or perhaps it's a trick question. Alternatively, maybe one of the actors, like Mike McShane, has a minor role in Seinfeld not mentioned here. But based solely on the given context, I can't confirm that.\n",
      "\n",
      "I think I need to proceed with the answer that Richard Fancy is known for Mr. Lippman in Seinfeld, but he's not in Red Bird. However, since the question asks for an actor from Red Bird, maybe the answer is that none are, but that's not helpful.\n",
      "\n",
      "Wait, perhaps the user made a mistake and included Richard Fancy in the context\n",
      "Error processing the output processors: Error: Error: No JSON object or array found in the text: <think>\n",
      "Okay, so I need to figure out which actor from the web series Red Bird is also known for a character in Seinfeld. Let me break this down step by step.\n",
      "\n",
      "First, I'll look at the context provided for Red Bird. It's an American Western web series that premiered in March 2016 on YouTube and their website. The main actors listed are Alexandra Goodman, Ian Stark, Armin Shimerman, Kitty Swink, Mike McShane, and John Prosky. \n",
      "\n",
      "Next, I need to see which of these actors have a connection to Seinfeld. I'll go through each actor one by one.\n",
      "\n",
      "1. Alexandra Goodman: I don't have any information here that links her to Seinfeld.\n",
      "2. Ian Stark: No info provided about him being in Seinfeld.\n",
      "3. Armin Shimerman: I know he's a well-known actor, especially for his role as Quark in Star Trek: Deep Space Nine, but I don't see a mention of Seinfeld here.\n",
      "4. Kitty Swink: No info about her in Seinfeld.\n",
      "5. Mike McShane: Also doesn't seem to be connected to Seinfeld based on the context given.\n",
      "6. John Prosky: No mention of him being in Seinfeld either.\n",
      "\n",
      "Wait a minute, the context also includes sections on Len Lesser and Richard Fancy. Let me check those since they might be relevant.\n",
      "\n",
      "Looking at Len Lesser, he was known for his recurring role as Uncle Leo in Seinfeld. That's a direct connection. But is he part of Red Bird? The Red Bird context lists the main actors, and Len Lesser isn't among them. So he's not the answer here.\n",
      "\n",
      "Now, checking Richard Fancy: He played Mr. Lippman in Seinfeld, Elaine's boss. So that's another actor with a Seinfeld connection. But again, is he in Red Bird? The main cast doesn't list him, so he's probably not the one.\n",
      "\n",
      "Hmm, maybe I missed something. Let me recheck the main actors in Red Bird. Armin Shimerman, Kitty Swink, Mike McShane, John Prosky, Ian Stark, and Alexandra Goodman. None of these names ring a bell in relation to Seinfeld based on the given information. \n",
      "\n",
      "Wait, perhaps I'm misunderstanding. Maybe one of the listed actors in Red Bird is known for a role in Seinfeld, but their Seinfeld role isn't mentioned here. However, based solely on the provided context, the Seinfeld connections are Len Lesser as Uncle Leo and Richard Fancy as Mr. Lippman. Since neither are listed in the Red Bird cast, maybe the answer lies elsewhere.\n",
      "\n",
      "Wait, perhaps the question is pointing towards someone else. Let me think again. Maybe I need to check the actors in Red Bird again. Is there any chance that one of them is known for a Seinfeld role not mentioned in the context? For example, Armin Shimerman was in Star Trek, but not Seinfeld as far as I know.\n",
      "\n",
      "Wait, the user might be looking for someone else. Let me see... Oh, wait! The context includes Len Lesser and Richard Fancy, but they're not in Red Bird. So perhaps the answer is that none of the Red Bird actors are known for Seinfeld roles, but that seems unlikely because the question states that one is. Maybe I'm missing something.\n",
      "\n",
      "Wait, perhaps I need to look again. The Red Bird cast includes Kitty Swink. Could she have a role in Seinfeld? The context doesn't mention it, but I might not have all the info. Alternatively, maybe it's a mistake in the context. Wait, no, the context doesn't link any of the Red Bird actors to Seinfeld.\n",
      "\n",
      "Wait, perhaps the user included Len Lesser and Richard Fancy as part of the context, thinking that they are in Red Bird. But looking back, the context starts with Red Bird, then has separate sections on Len Lesser and Richard Fancy. So they are separate. So the web series Red Bird has its own cast, and the other sections are about different people.\n",
      "\n",
      "So the answer would be that none of the main cast of Red Bird are known for Seinfeld roles. But the question says that one is, so perhaps I'm missing something. Wait, maybe I need to check the user's question again.\n",
      "\n",
      "Wait, the question is: \"One of the actors from the web series Red Bird is also known for what character in the popular television show Seinfeld?\"\n",
      "\n",
      "Given that, I need to see if any Red Bird actor is known for a Seinfeld role. From the context, the actors in Red Bird are: Alexandra Goodman, Ian Stark, Armin Shimerman, Kitty Swink, Mike McShane, and John Prosky.\n",
      "\n",
      "Looking at their names, none of them are mentioned in the Seinfeld sections (Len Lesser and Richard Fancy). So perhaps the answer is that none of them are known for Seinfeld roles. But the question implies that one is, so maybe I need to look again.\n",
      "\n",
      "Wait, maybe I'm misunderstanding the structure. The context has Red Bird, then Len Lesser, then Richard Fancy. So the user is providing context about three different entities: the series and two actors. So perhaps the question is asking about the actors in the context, not necessarily in Red Bird.\n",
      "\n",
      "Wait, that would make more sense. So the question is asking, among the actors provided in the context (including Len Lesser and Richard Fancy), which one is known for a Seinfeld character and is also in Red Bird.\n",
      "\n",
      "But looking back, Len Lesser is known for Uncle Leo in Seinfeld, but he's not listed as part of Red Bird's cast. Richard Fancy is known for Mr. Lippman in Seinfeld, but he's also not in Red Bird's cast. So that leaves the question without an answer based on the given context.\n",
      "\n",
      "Wait, but the question specifically says \"One of the actors from the web series Red Bird,\" so it must be someone from that list. Maybe I missed something in the context. Let me check again.\n",
      "\n",
      "Wait, perhaps Armin Shimerman is the connection. He's in Red Bird, and he's known for Star Trek, but not Seinfeld. Kitty Swink is also known for her role as Christina Pickles' partner, but not Seinfeld.\n",
      "\n",
      "Wait, maybe it's John Prosky. I'm not familiar with him in Seinfeld. Mike McShane? No. So perhaps the answer is that none of the Red Bird actors are known for Seinfeld, but the question says one is. Maybe I'm missing something.\n",
      "\n",
      "Alternatively, perhaps the user made a mistake in the context. Maybe one of the actors in Red Bird is indeed known for Seinfeld, but it's not mentioned here. But based on the provided info, I can't conclude that.\n",
      "\n",
      "Wait, perhaps the answer is Richard Fancy, but he's not in Red Bird. Similarly, Len Lesser is not in Red Bird. So I'm confused. Maybe the question is incorrect, or perhaps I'm misinterpreting.\n",
      "\n",
      "Wait, perhaps the question is asking which actor in the entire context, not necessarily from Red Bird, is known for Seinfeld. But no, the question specifies from Red Bird.\n",
      "\n",
      "I think I've reached the limit of my understanding. Based on the context, none of the Red Bird actors are known for Seinfeld roles as per the given info. Therefore, the answer might be that there isn't such an actor, but the question suggests there is. Maybe I need to check the context again.\n",
      "\n",
      "Wait, perhaps the user included the info about Len Lesser and Richard Fancy to suggest that they are in Red Bird, but looking back, the context clearly separates them. So they are separate.\n",
      "\n",
      "In conclusion, based on the given context, none of the Red Bird actors are known for Seinfeld roles. But the question implies that one is, so perhaps I'm missing something. Maybe the answer is that there's no such actor, but that contradicts the question. Alternatively, maybe the answer is Richard Fancy, but he's not in Red Bird.\n",
      "\n",
      "Wait, perhaps I made a mistake. Let me check the context again. The Red Bird cast is listed, and then separately, Len Lesser and Richard Fancy are described. So perhaps the question is asking about the actors in the entire context, not just the Red Bird series. That would make sense. So the answer would be Richard Fancy, as he's in Seinfeld, even though he's not in Red Bird.\n",
      "\n",
      "But wait, the question specifically says \"from the web series Red Bird,\" so I think it's only about the actors in Red Bird. Therefore, based on the context, no one fits that. But since the question says one does, maybe the user included the wrong context. Alternatively, perhaps I'm supposed to infer that Richard Fancy is in Red Bird, but the context doesn't say that.\n",
      "\n",
      "I'm stuck. I think the answer is that Richard Fancy is known for Mr. Lippman in Seinfeld, but he's not in Red Bird based on the provided context. Alternatively, Len Lesser is known for Uncle Leo, but he's not in Red Bird either. Therefore, based on the given context, the answer would be that there is no actor from Red Bird known for Seinfeld. But that contradicts the question's premise.\n",
      "\n",
      "I'm probably missing something. Maybe the user intended that Richard Fancy is in Red Bird, but it's not stated. Or perhaps it's a trick question. Alternatively, maybe one of the actors, like Mike McShane, has a minor role in Seinfeld not mentioned here. But based solely on the given context, I can't confirm that.\n",
      "\n",
      "I think I need to proceed with the answer that Richard Fancy is known for Mr. Lippman in Seinfeld, but he's not in Red Bird. However, since the question asks for an actor from Red Bird, maybe the answer is that none are, but that's not helpful.\n",
      "\n",
      "Wait, perhaps the user made a mistake and included Richard Fancy in the context\n",
      "Predicting: step(0): 0.415 across 200 samples, Max potential: 0.415: 100%|██████████| 200/200 [04:31<00:00,  1.36s/it] \n",
      "Error loading jsonl file /Users/liyin/.adalflow/ckpt/HotPotQAAdal/diagnose_train/llm_call.jsonl: line contains invalid json: unexpected content after document: line 1 column 8686 (char 8685) (line 114)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Log file /Users/liyin/.adalflow/ckpt/HotPotQAAdal/diagnose_train/llm_call.jsonl is empty. This llm is not called at all.\n",
      "\n",
      "================== DIAGNOSE REPORT ==================\n",
      "\n",
      "✔ Split: train\n",
      "✔ Overall accuracy score: 0.41\n",
      "✔ Log paths:\n",
      "  - Log 1: /Users/liyin/.adalflow/ckpt/HotPotQAAdal/diagnose_train/llm_call.jsonl\n",
      "\n",
      "✔ Diagnose report completed successfully!\n",
      "\n",
      "=====================================================\n",
      "\n"
     ]
    }
   ],
   "source": [
    "train_diagnose(**deepseek_r1_distilled_model)  # 41% 2m19.1s"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "split_csv_path: /Users/liyin/.adalflow/cache_datasets/hotpot_qa_dev_titles/train.json\n",
      "split_csv_path: /Users/liyin/.adalflow/cache_datasets/hotpot_qa_dev_titles/val.json\n",
      "split_csv_path: /Users/liyin/.adalflow/cache_datasets/hotpot_qa_dev_titles/test.json\n",
      "trainset, valset: 100, 100, example: HotPotQAData(id='5a7cc25d5542990527d55520', question='Which host of Whodunnit died on November 16, 2009?', answer='Edward Woodward', gold_titles={'Edward Woodward', 'Whodunnit? (UK TV series)'}, context={'title': ['Cyclone Tia', 'Harry Taylor (ice hockey)', 'Edward Woodward', 'Cheikh El Avia Ould Mohamed Khouna', 'Tornado outbreak of November 16–18, 2015', 'Whodunnit? (UK TV series)', 'First Cabinet of Donald Tusk', 'Maranhão gubernatorial election, 1994', 'Clark Van Galder', 'James Fraser Mustard'], 'sentences': [['Severe Tropical Cyclone Tia was the first of six tropical cyclones to affect Vanuatu, during the 1991–92 South Pacific cyclone season.', ' The system was first noted within the South Pacific convergence zone as a small tropical depression on November 13, to the northeast of the Solomon Islands.', ' Over the next few days the system gradually developed further within an area of light winds in the upper troposphere, before it was named Tia early on November 16.', ' Later that day due to a developing northerly steering current, the system slowed down and undertook a small anticlockwise loop before starting to move towards the southwest and rapidly intensify.', ' After rapidly intensifying throughout November 16 and 17, Tia passed within 55 km of the Solomon Island: Anuta at around 1800 UTC on November 17, before passing near Tikopia Island six hours later.', ' As Tia moved near Tikopia, the system reached its peak intensity as a category 3 severe tropical cyclone, with 10‑minute sustained windspeeds of 140 km/h .'], ['Harold Taylor (March 28, 1926 – November 16, 2009) was a professional ice hockey player who played 66 games in the National Hockey League.', ' Born in St. James, Manitoba, he played with the Toronto Maple Leafs and Chicago Black Hawks and won a Stanley Cup with the Leafs in 1949.', ' He died in Sidney, British Columbia in November 2009.'], ['Edward Albert Arthur Woodward, OBE (1 June 1930 – 16 November 2009) was an English actor and singer.'], ['Cheikh El Avia Ould Mohamed Khouna (born 1956) is a Mauritanian political figure.', \" He was the 7th Prime Minister of Mauritania from January 2, 1996 to December 18, 1997, Minister of Foreign Affairs from July 12, 1998 to November 16, 1998, and Prime Minister again from November 16, 1998 to July 6, 2003 under President Maaouya Ould Sid'Ahmed Taya; later, he briefly served as Minister of Foreign Affairs again in 2008.\"], ['The Tornado outbreak of November 16–18, 2015 was a highly unusual nocturnal late-season tornado outbreak that significantly impacted the lower Great Plains on November\\xa016 before producing additional weaker tornadoes across parts of the Southern United States the following two days.', ' The first day of the outbreak spawned multiple strong, long-track tornadoes, including two consecutive EF3s that caused major damage near Pampa, Texas.', ' Overall, the outbreak produced 61\\xa0tornadoes in all, and was described as by the National Weather Service office in Dodge City, Kansas as being \"unprecedented in recorded history for southwest Kansas.\"', ' Despite spawning multiple strong tornadoes after dark, no fatalities and only one minor injury occurred as a result of the outbreak.'], ['Whodunnit?', ' was a British television game show that originally aired on ITV as a pilot on 15 August 1972 hosted by Shaw Taylor and then as a full series from 25 June 1973 to 26 June 1978 first hosted by Edward Woodward in 1973 and then hosted by Jon Pertwee from 1974 to 1978.'], ['The First Cabinet of Donald Tusk was the government of Poland from November 16, 2007 to November 18, 2011 sitting in the Council of Ministers during the 6th legislature of the Sejm and the 7th legislature of the Senate.', ' It was appointed by President Lech Kaczyński on November 16, 2007, and passed the vote of confidence in Sejm on November 24, 2007.', \" Led by the centre-right politician Donald Tusk it was supported by the coalition of two parties: the liberal conservative Civic Platform (PO) and the agrarian Polish People's Party (PSL).\"], [\"The Maranhão gubernatorial election of 1994 was held in the Brazilian state of Maranhão on October 3, alongside Brazil's general elections, with a second round on November 16.\", ' Liberal Front Party (PFL) candidate Roseana Sarney was elected on November 16, 1994.'], ['Clark Van Galder (February 6, 1909 – November 16, 1965) was an American football, basketball player, track athlete, and coach.', ' He served as the head football coach at La Crosse State Teachers, now University of Wisconsin–La Crosse, from 1948 to 1951 and at Fresno State College, now California State University, Fresno, from 1952 to 1958, compiling a career college football record of 77–27–3.', ' Van Galder died on November 16, 1965 after collapsing at a banquet in Madison, Wisconsin.', ' He had five sons, the fourth of which, Tim, played football as a quarterback at Iowa State University and then in the National Football League (NFL) with the New York Jets and St. Louis Cardinals.'], ['James Fraser Mustard, {\\'1\\': \", \\'2\\': \", \\'3\\': \", \\'4\\': \"} (October 16, 1927 – November 16, 2011) was a Canadian doctor and renowned researcher in early childhood development.', ' Born, raised and educated in Toronto, Ontario, Mustard began his career as a research fellow at the University of Toronto where he studied the effects of blood lipids, their relation to heart disease and how Aspirin could mitigate those effects.', ' He published the first clinical trial showing that aspirin could prevent heart attacks and strokes.', \" In 1966, he was one of the founding faculty members at McMaster University's newly established medical school.\", ' He was the Dean of the Faculty of Health Sciences and the medical school at McMaster University from 1972-1982.', ' In 1982, he helped found the Canadian Institute for Advanced Research and served as its founding president, serving until 1996.', ' He wrote several papers and studies on early childhood development, including a report used by the Ontario Government that helped create a province-wide full-day kindergarten program.', \" He won many awards including being made a companion of the Order of Canada – the order's highest level – and was inducted into the Canadian Medical Hall of Fame.\", ' He died November 16th, 2011.']]})\n",
      "2025-02-04 15:41:10 - [trainer.py:227:diagnose] - Checkpoint path: /Users/liyin/.adalflow/ckpt/HotPotQAAdal\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Generator llm is already registered with jsonl file at /Users/liyin/.adalflow/ckpt/HotPotQAAdal/diagnose_train/llm_call.jsonl\n",
      "\n",
      "Loading Data: 100%|██████████| 100/100 [00:00<00:00, 34388.00it/s]\n",
      "Predicting: step(0): 0.56 across 100 samples, Max potential: 0.56: 100%|██████████| 100/100 [00:00<00:00, 183.70it/s]\n",
      "Error loading jsonl file /Users/liyin/.adalflow/ckpt/HotPotQAAdal/diagnose_train/llm_call.jsonl: line contains invalid json: unexpected content after document: line 1 column 8686 (char 8685) (line 114)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Log file /Users/liyin/.adalflow/ckpt/HotPotQAAdal/diagnose_train/llm_call.jsonl is empty. This llm is not called at all.\n",
      "\n",
      "================== DIAGNOSE REPORT ==================\n",
      "\n",
      "✔ Split: train\n",
      "✔ Overall accuracy score: 0.56\n",
      "✔ Log paths:\n",
      "  - Log 1: /Users/liyin/.adalflow/ckpt/HotPotQAAdal/diagnose_train/llm_call.jsonl\n",
      "\n",
      "✔ Diagnose report completed successfully!\n",
      "\n",
      "=====================================================\n",
      "\n"
     ]
    }
   ],
   "source": [
    "train_diagnose(**gpt_o3_mini_model)  # 56%, 1m58s"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "split_csv_path: /Users/liyin/.adalflow/cache_datasets/hotpot_qa_dev_titles/train.json\n",
      "split_csv_path: /Users/liyin/.adalflow/cache_datasets/hotpot_qa_dev_titles/val.json\n",
      "split_csv_path: /Users/liyin/.adalflow/cache_datasets/hotpot_qa_dev_titles/test.json\n",
      "trainset, valset: 100, 100, example: HotPotQAData(id='5a7cc25d5542990527d55520', question='Which host of Whodunnit died on November 16, 2009?', answer='Edward Woodward', gold_titles={'Edward Woodward', 'Whodunnit? (UK TV series)'}, context={'title': ['Cyclone Tia', 'Harry Taylor (ice hockey)', 'Edward Woodward', 'Cheikh El Avia Ould Mohamed Khouna', 'Tornado outbreak of November 16–18, 2015', 'Whodunnit? (UK TV series)', 'First Cabinet of Donald Tusk', 'Maranhão gubernatorial election, 1994', 'Clark Van Galder', 'James Fraser Mustard'], 'sentences': [['Severe Tropical Cyclone Tia was the first of six tropical cyclones to affect Vanuatu, during the 1991–92 South Pacific cyclone season.', ' The system was first noted within the South Pacific convergence zone as a small tropical depression on November 13, to the northeast of the Solomon Islands.', ' Over the next few days the system gradually developed further within an area of light winds in the upper troposphere, before it was named Tia early on November 16.', ' Later that day due to a developing northerly steering current, the system slowed down and undertook a small anticlockwise loop before starting to move towards the southwest and rapidly intensify.', ' After rapidly intensifying throughout November 16 and 17, Tia passed within 55 km of the Solomon Island: Anuta at around 1800 UTC on November 17, before passing near Tikopia Island six hours later.', ' As Tia moved near Tikopia, the system reached its peak intensity as a category 3 severe tropical cyclone, with 10‑minute sustained windspeeds of 140 km/h .'], ['Harold Taylor (March 28, 1926 – November 16, 2009) was a professional ice hockey player who played 66 games in the National Hockey League.', ' Born in St. James, Manitoba, he played with the Toronto Maple Leafs and Chicago Black Hawks and won a Stanley Cup with the Leafs in 1949.', ' He died in Sidney, British Columbia in November 2009.'], ['Edward Albert Arthur Woodward, OBE (1 June 1930 – 16 November 2009) was an English actor and singer.'], ['Cheikh El Avia Ould Mohamed Khouna (born 1956) is a Mauritanian political figure.', \" He was the 7th Prime Minister of Mauritania from January 2, 1996 to December 18, 1997, Minister of Foreign Affairs from July 12, 1998 to November 16, 1998, and Prime Minister again from November 16, 1998 to July 6, 2003 under President Maaouya Ould Sid'Ahmed Taya; later, he briefly served as Minister of Foreign Affairs again in 2008.\"], ['The Tornado outbreak of November 16–18, 2015 was a highly unusual nocturnal late-season tornado outbreak that significantly impacted the lower Great Plains on November\\xa016 before producing additional weaker tornadoes across parts of the Southern United States the following two days.', ' The first day of the outbreak spawned multiple strong, long-track tornadoes, including two consecutive EF3s that caused major damage near Pampa, Texas.', ' Overall, the outbreak produced 61\\xa0tornadoes in all, and was described as by the National Weather Service office in Dodge City, Kansas as being \"unprecedented in recorded history for southwest Kansas.\"', ' Despite spawning multiple strong tornadoes after dark, no fatalities and only one minor injury occurred as a result of the outbreak.'], ['Whodunnit?', ' was a British television game show that originally aired on ITV as a pilot on 15 August 1972 hosted by Shaw Taylor and then as a full series from 25 June 1973 to 26 June 1978 first hosted by Edward Woodward in 1973 and then hosted by Jon Pertwee from 1974 to 1978.'], ['The First Cabinet of Donald Tusk was the government of Poland from November 16, 2007 to November 18, 2011 sitting in the Council of Ministers during the 6th legislature of the Sejm and the 7th legislature of the Senate.', ' It was appointed by President Lech Kaczyński on November 16, 2007, and passed the vote of confidence in Sejm on November 24, 2007.', \" Led by the centre-right politician Donald Tusk it was supported by the coalition of two parties: the liberal conservative Civic Platform (PO) and the agrarian Polish People's Party (PSL).\"], [\"The Maranhão gubernatorial election of 1994 was held in the Brazilian state of Maranhão on October 3, alongside Brazil's general elections, with a second round on November 16.\", ' Liberal Front Party (PFL) candidate Roseana Sarney was elected on November 16, 1994.'], ['Clark Van Galder (February 6, 1909 – November 16, 1965) was an American football, basketball player, track athlete, and coach.', ' He served as the head football coach at La Crosse State Teachers, now University of Wisconsin–La Crosse, from 1948 to 1951 and at Fresno State College, now California State University, Fresno, from 1952 to 1958, compiling a career college football record of 77–27–3.', ' Van Galder died on November 16, 1965 after collapsing at a banquet in Madison, Wisconsin.', ' He had five sons, the fourth of which, Tim, played football as a quarterback at Iowa State University and then in the National Football League (NFL) with the New York Jets and St. Louis Cardinals.'], ['James Fraser Mustard, {\\'1\\': \", \\'2\\': \", \\'3\\': \", \\'4\\': \"} (October 16, 1927 – November 16, 2011) was a Canadian doctor and renowned researcher in early childhood development.', ' Born, raised and educated in Toronto, Ontario, Mustard began his career as a research fellow at the University of Toronto where he studied the effects of blood lipids, their relation to heart disease and how Aspirin could mitigate those effects.', ' He published the first clinical trial showing that aspirin could prevent heart attacks and strokes.', \" In 1966, he was one of the founding faculty members at McMaster University's newly established medical school.\", ' He was the Dean of the Faculty of Health Sciences and the medical school at McMaster University from 1972-1982.', ' In 1982, he helped found the Canadian Institute for Advanced Research and served as its founding president, serving until 1996.', ' He wrote several papers and studies on early childhood development, including a report used by the Ontario Government that helped create a province-wide full-day kindergarten program.', \" He won many awards including being made a companion of the Order of Canada – the order's highest level – and was inducted into the Canadian Medical Hall of Fame.\", ' He died November 16th, 2011.']]})\n",
      "2025-02-04 16:27:48 - [trainer.py:227:diagnose] - Checkpoint path: /Users/liyin/.adalflow/ckpt/HotPotQAAdal\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Generator llm is already registered with jsonl file at /Users/liyin/.adalflow/ckpt/HotPotQAAdal/diagnose_train/llm_call.jsonl\n",
      "\n",
      "Loading Data: 100%|██████████| 200/200 [00:00<00:00, 92681.56it/s]\n",
      "Predicting: step(0): 0.395 across 200 samples, Max potential: 0.395: 100%|██████████| 200/200 [00:00<00:00, 432.60it/s] \n",
      "Error loading jsonl file /Users/liyin/.adalflow/ckpt/HotPotQAAdal/diagnose_train/llm_call.jsonl: line contains invalid json: unexpected content after document: line 1 column 8686 (char 8685) (line 114)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Log file /Users/liyin/.adalflow/ckpt/HotPotQAAdal/diagnose_train/llm_call.jsonl is empty. This llm is not called at all.\n",
      "\n",
      "================== DIAGNOSE REPORT ==================\n",
      "\n",
      "✔ Split: train\n",
      "✔ Overall accuracy score: 0.40\n",
      "✔ Log paths:\n",
      "  - Log 1: /Users/liyin/.adalflow/ckpt/HotPotQAAdal/diagnose_train/llm_call.jsonl\n",
      "\n",
      "✔ Diagnose report completed successfully!\n",
      "\n",
      "=====================================================\n",
      "\n"
     ]
    }
   ],
   "source": [
    "train_diagnose(**gpt_3_model)  # 42% 25s"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here is the current performance on the tested modeles:\n",
    "\n",
    "**Train dataset**\n",
    "\n",
    "| Model | EM | Running Time | Notes |\n",
    "| --- | --- | --- | --- |\n",
    "| o1  | 57 | 2m12s |  |\n",
    "| o3mini  | 56 | 1m58s |  |\n",
    "| gpt3.5 | 42 | 25s | |\n",
    "| r1  | 46 | 34m | structure data format errors, the <br> running time might because of the <br> deployment rather than the model itself |\n",
    "| r1 distilled  | 41 | 2m19s | structure data format errors |\n",
    "\n",
    "**Test dataset**\n",
    "\n",
    "| Model | EM | Running Time | Notes |\n",
    "| --- | --- | --- | --- |\n",
    "| o1  | 49 | N/A |  |\n",
    "| gpt3.5 | 40 |  | |\n",
    "| r1 distilled  | 41.5 |  | structure data format errors |"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Training.\n",
    "\n",
    "First, we will try to use cheaper models to do the same task with lower cost.\n",
    "Let's train gpt3.5 with o3-mini first as o3-mini is the cheapest among 4o, o1."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "from adalflow.core.generator import BackwardPassSetup\n",
    "\n",
    "\n",
    "def train(\n",
    "    task_model_cliet,\n",
    "    task_model_kwargs,\n",
    "    optimizer_model_config,\n",
    "    backward_engine_model_config,\n",
    "    train_batch_size=4,  # larger batch size is not that effective, probably because of llm's lost in the middle\n",
    "    raw_shots: int = 0,\n",
    "    bootstrap_shots: int = 4,\n",
    "    max_steps=1,\n",
    "    num_workers=4,\n",
    "    strategy=\"constrained\",\n",
    "    optimization_order=\"sequential\",\n",
    "    debug=False,\n",
    "    resume_from_ckpt=None,\n",
    "    exclude_input_fields_from_bootstrap_demos=True,\n",
    "    seed=None,\n",
    "    max_proposals_per_step: int = 5,\n",
    "    disable_backward_gradients: bool = False,\n",
    "    disable_backward: bool = False,\n",
    "):\n",
    "    task = VanillaRAG(\n",
    "        model_client=task_model_cliet,\n",
    "        model_kwargs=task_model_kwargs,\n",
    "        passages_per_hop=3,\n",
    "    )\n",
    "\n",
    "    adal_component = HotPotQAAdal(\n",
    "        task=task,\n",
    "        text_optimizer_model_config=optimizer_model_config,\n",
    "        backward_engine_model_config=backward_engine_model_config,\n",
    "    )\n",
    "\n",
    "    trainer = adal.Trainer(\n",
    "        train_batch_size=train_batch_size,\n",
    "        adaltask=adal_component,\n",
    "        strategy=strategy,\n",
    "        max_steps=max_steps,\n",
    "        num_workers=num_workers,\n",
    "        raw_shots=raw_shots,\n",
    "        bootstrap_shots=bootstrap_shots,\n",
    "        debug=debug,\n",
    "        weighted_sampling=False,\n",
    "        optimization_order=optimization_order,\n",
    "        exclude_input_fields_from_bootstrap_demos=exclude_input_fields_from_bootstrap_demos,\n",
    "        max_proposals_per_step=max_proposals_per_step,\n",
    "        text_optimizers_config_kwargs={\"max_past_history\": 5},\n",
    "        disable_backward_gradients=disable_backward_gradients,\n",
    "        disable_backward=disable_backward,\n",
    "    )\n",
    "    trainer.set_random_seed(seed)\n",
    "    print(trainer)\n",
    "\n",
    "    train_dataset, val_dataset, test_dataset = load_datasets()\n",
    "    ckpt, _ = trainer.fit(\n",
    "        train_dataset=train_dataset,\n",
    "        val_dataset=val_dataset,\n",
    "        test_dataset=test_dataset,\n",
    "        resume_from_ckpt=resume_from_ckpt,\n",
    "    )\n",
    "    return ckpt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'gpt_3_model' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "Cell \u001b[0;32mIn[24], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m train(task_model_cliet\u001b[38;5;241m=\u001b[39m\u001b[43mgpt_3_model\u001b[49m[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmodel_client\u001b[39m\u001b[38;5;124m\"\u001b[39m], task_model_kwargs\u001b[38;5;241m=\u001b[39mgpt_3_model[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmodel_kwargs\u001b[39m\u001b[38;5;124m\"\u001b[39m],\n\u001b[1;32m      2\u001b[0m       optimizer_model_config\u001b[38;5;241m=\u001b[39mgpt_o3_mini_model,\n\u001b[1;32m      3\u001b[0m       backward_engine_model_config\u001b[38;5;241m=\u001b[39mgpt_o3_mini_model,\n\u001b[1;32m      4\u001b[0m       max_steps\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m12\u001b[39m)\n",
      "\u001b[0;31mNameError\u001b[0m: name 'gpt_3_model' is not defined"
     ]
    }
   ],
   "source": [
    "train(\n",
    "    task_model_cliet=gpt_3_model[\"model_client\"],\n",
    "    task_model_kwargs=gpt_3_model[\"model_kwargs\"],\n",
    "    optimizer_model_config=gpt_o3_mini_model,\n",
    "    backward_engine_model_config=gpt_o3_mini_model,\n",
    "    max_steps=12,\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "# write code to plot the training curve\n",
    "\n",
    "file = (\n",
    "    \"/Users/liyin/.adalflow/ckpt/HotPotQAAdal/constrained_max_steps_12_3c4ea_run_1.json\"\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "import json\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "\n",
    "def plot_single_training(\n",
    "    file_path,\n",
    "    model_name,\n",
    "    marker_val=\"o\",\n",
    "    color_val=\"tab:blue\",\n",
    "    marker_test=\"D\",\n",
    "    color_init_test=\"tab:orange\",\n",
    "    color_final_test=\"tab:green\",\n",
    "):\n",
    "    \"\"\"\n",
    "    Plots the training progression (validation curve, initial test score, and\n",
    "    final test score) for a single model.\n",
    "\n",
    "    Parameters:\n",
    "    -----------\n",
    "    file_path : str\n",
    "        Path to the JSON file containing the training data.\n",
    "    model_name : str\n",
    "        Label to use in the legend for this model.\n",
    "    marker_val : str\n",
    "        Marker style for validation scores.\n",
    "    color_val : str\n",
    "        Color for validation scores line.\n",
    "    marker_test : str\n",
    "        Marker style for test scores.\n",
    "    color_init_test : str\n",
    "        Color for the initial test score.\n",
    "    color_final_test : str\n",
    "        Color for the final test score.\n",
    "    \"\"\"\n",
    "    with open(file_path, \"r\") as f:\n",
    "        data = json.load(f)\n",
    "\n",
    "    val_scores = data.get(\"val_scores\", [])\n",
    "    start_test_score = data.get(\"test_scores\", [None])[0]\n",
    "    end_test_score = data.get(\"test_score\", None)\n",
    "\n",
    "    # Plot validation scores\n",
    "    plt.plot(\n",
    "        val_scores,\n",
    "        label=f\"{model_name} - Validation\",\n",
    "        marker=marker_val,\n",
    "        markersize=5,\n",
    "        linewidth=1.5,\n",
    "        color=color_val,\n",
    "    )\n",
    "\n",
    "    # Plot initial test score\n",
    "    if start_test_score is not None:\n",
    "        plt.scatter(\n",
    "            0,\n",
    "            start_test_score,\n",
    "            s=100,\n",
    "            marker=marker_test,\n",
    "            color=color_init_test,\n",
    "            edgecolor=\"black\",\n",
    "            label=f\"{model_name} - Initial Test\",\n",
    "        )\n",
    "\n",
    "    # Plot final test score\n",
    "    if end_test_score is not None and len(val_scores) > 0:\n",
    "        plt.scatter(\n",
    "            len(val_scores) - 1,\n",
    "            end_test_score,\n",
    "            s=100,\n",
    "            marker=marker_test,\n",
    "            color=color_final_test,\n",
    "            edgecolor=\"black\",\n",
    "            label=f\"{model_name} - Final Test\",\n",
    "        )\n",
    "\n",
    "\n",
    "def compare_two_trainings(file1, model1, file2, model2):\n",
    "    \"\"\"\n",
    "    Creates a single figure that compares the training progression of two models.\n",
    "    Calls `plot_single_training` for each model and overlays the plots.\n",
    "\n",
    "    Parameters:\n",
    "    -----------\n",
    "    file1 : str\n",
    "        Path to the JSON file for the first model.\n",
    "    model1 : str\n",
    "        Name/label for the first model.\n",
    "    file2 : str\n",
    "        Path to the JSON file for the second model.\n",
    "    model2 : str\n",
    "        Name/label for the second model.\n",
    "    \"\"\"\n",
    "    plt.figure(figsize=(12, 6))\n",
    "\n",
    "    # Plot the first model\n",
    "    plot_single_training(\n",
    "        file1,\n",
    "        model1,\n",
    "        marker_val=\"o\",\n",
    "        color_val=\"tab:blue\",\n",
    "        marker_test=\"D\",\n",
    "        color_init_test=\"tab:orange\",\n",
    "        color_final_test=\"tab:green\",\n",
    "    )\n",
    "\n",
    "    # Plot the second model\n",
    "    plot_single_training(\n",
    "        file2,\n",
    "        model2,\n",
    "        marker_val=\"s\",\n",
    "        color_val=\"tab:red\",\n",
    "        marker_test=\"^\",\n",
    "        color_init_test=\"tab:purple\",\n",
    "        color_final_test=\"tab:brown\",\n",
    "    )\n",
    "\n",
    "    plt.title(\"Comparison of Model Training Progress\", fontsize=14, pad=20)\n",
    "    plt.xlabel(\"Training Steps\", fontsize=12)\n",
    "    plt.ylabel(\"Score\", fontsize=12)\n",
    "\n",
    "    # Combine legend entries from both plots\n",
    "    plt.legend(loc=\"lower right\", frameon=True)\n",
    "\n",
    "    plt.grid(True, linestyle=\"--\", alpha=0.6)\n",
    "    plt.tight_layout()\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_training_single(file):\n",
    "    import json\n",
    "    import matplotlib.pyplot as plt\n",
    "\n",
    "    with open(file) as f:\n",
    "        data = json.load(f)\n",
    "\n",
    "    val_scores = data[\"val_scores\"]\n",
    "    start_test_score = data[\"test_scores\"][0]\n",
    "    end_test_score = data[\"test_score\"]\n",
    "\n",
    "    plt.figure(figsize=(12, 6))\n",
    "\n",
    "    # Plot validation scores as a continuous line\n",
    "    plt.plot(\n",
    "        val_scores,\n",
    "        label=\"Validation Scores\",\n",
    "        marker=\"o\",\n",
    "        markersize=5,\n",
    "        linewidth=1.5,\n",
    "        color=\"tab:blue\",\n",
    "    )\n",
    "\n",
    "    # Plot test scores as individual markers\n",
    "    plt.scatter(\n",
    "        0,\n",
    "        start_test_score,\n",
    "        s=100,\n",
    "        marker=\"D\",\n",
    "        color=\"tab:orange\",\n",
    "        edgecolor=\"black\",\n",
    "        label=\"Initial Test Score\",\n",
    "    )\n",
    "    plt.scatter(\n",
    "        len(val_scores) - 1,\n",
    "        end_test_score,\n",
    "        s=100,\n",
    "        marker=\"D\",\n",
    "        color=\"tab:green\",\n",
    "        edgecolor=\"black\",\n",
    "        label=\"Final Test Score\",\n",
    "    )\n",
    "\n",
    "    plt.title(\"Training Progress\", fontsize=14, pad=20)\n",
    "    plt.xlabel(\"Training Steps\", fontsize=12)\n",
    "    plt.ylabel(\"Score\", fontsize=12)\n",
    "    plt.legend(loc=\"lower right\", frameon=True)\n",
    "    plt.grid(True, linestyle=\"--\", alpha=0.6)\n",
    "\n",
    "    # Set x-axis to show only integer steps\n",
    "    plt.xticks(range(0, len(val_scores) + 1, max(1, len(val_scores) // 10)))\n",
    "\n",
    "    plt.tight_layout()\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAJOCAYAAABm7rQwAAAAP3RFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMS5wb3N0MSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8kixA/AAAACXBIWXMAAA9hAAAPYQGoP6dpAADZWUlEQVR4nOzdeXxU9b3/8feZycaSAGGLQCDsAQRRNnfUImitW13QKiBudcFWqSj+6t72utRa1NpqLe69rtRdcUFBVBRFgRhIWANhCVtCEgLZZs7vDy4pgQSTfCazvp6PRx/3ejJJvt/XmYHky5nzdVzXdQUAAAAAAAAEkSfUAwAAAAAAAEDsYVEKAAAAAAAAQceiFAAAAAAAAIKORSkAAAAAAAAEHYtSAAAAAAAACDoWpQAAAAAAABB0LEoBAAAAAAAg6FiUAgAAAAAAQNCxKAUAAAAAAICgY1EKAABELcdxdNJJJ5m+xty5c+U4ju6+++6AjAkAAAB7sSgFAACaleM4jfofflpGRkatZl6vVx06dNDYsWP11ltvhXp4AAAADRIX6gEAAIDodtdddx10bMaMGSouLq7zY4G0fPlytWzZ0vQ1Ro4cqeXLl6tDhw4BGlVgeL1e3X777ZKkyspK5eTk6O2339bHH3+shx56SL/73e9CPEIAAIBDc1zXdUM9CAAAEFsyMjK0bt068WNI02RkZKigoEDl5eW1jn/00Uc67bTT1KJFC23bts28IAcAANCcePseAAAIC3l5eXIcR5dddpmWL1+uc889V+3bt5fjOMrLy5MkvfHGG7r44ovVp08ftWzZUm3atNEJJ5ygWbNm1fk167qn1GWXXSbHcbR27Vo9+uijyszMVGJionr06KF77rlHfr+/1uPru6dURkaGMjIytGvXLv32t79Vly5dlJiYqCFDhuj111+vd47jx49XamqqWrdurdGjR+vzzz/X3XffLcdxNHfu3KakqzF27Fj1799fu3fvVnZ2tiTppJNOkuM4Ki8v1+23367evXsrPj6+1ny+/PJLnXHGGUpNTVVSUpIyMzN11113affu3XV+n//85z8aPny4WrRooc6dO+uqq65SUVFRTZP97eu9Zs0a/eUvf9HAgQOVmJioyy67rOYxW7du1U033aQ+ffooMTFRHTp00Hnnnacff/zxoO+9cuVKTZ48WT179lRiYqJSU1N1xBFH6MYbb6y1yLl582b99re/Vd++fdWiRQu1bdtWAwYM0DXXXKPi4uKmRwYAAAHD2/cAAEBYWbVqlY4++mgNHjxYl112mXbs2KGEhARJ0m233aaEhAQdf/zxOuyww7Rt2za9/fbbOv/88/Xoo4/qhhtuaPD3mTZtmubNm6df/OIXGjdunN58803dfffdqqys1J/+9KcGfY2qqiqNHTtWRUVFOu+887R79269/PLLuvDCCzV79myNHTu25rEbN27Uscceq82bN+u0007TkUceqdzcXJ166qk65ZRTGhepAQ68P9d5552nJUuW6LTTTlPbtm3Vs2dPSdJrr72miy++WImJiRo/frw6deqkjz76SPfee68+/PBDzZ07V0lJSTVf5+mnn9YVV1yhlJQUTZw4UW3atNH777+vU089VVVVVYqPj69zPDfccIO+/vprnXHGGTrzzDPVqVMnSdLq1at10kknacOGDRo7dqzOOeccbd26VbNmzdKHH36oOXPmaNSoUZKkTZs2aeTIkSorK9MZZ5yh8ePHq6ysTCtXrtTf//53PfTQQ4qLi9Pu3bt13HHHKS8vT2PHjtW5556ryspKrV27Vi+88IJuvvlmtWnTJuDNAQBAI7kAAABB1qNHD/fAH0PWrl3rSnIluXfeeWedn7d69eqDjpWWlrqDBw9227Rp45aVldX6mCR39OjRtY5NmjTJleT27NnT3bRpU83xbdu2uW3btnWTk5PdioqKmuOfffaZK8m966676pzD2WefXevxn3zyiSvJHTduXK3HX3rppa4k909/+lOt4zNnzqyZ92effVbnvA/Uo0cPNzEx8aDjn3zyies4jtuqVSt39+7druu67ujRo11J7tChQ90dO3bUenxxcbHbpk0bNzEx0V2yZEnNcZ/P544fP96V5N577701x4uKitzWrVu7rVq1clesWFFzvKqqyj3llFNcSW6PHj1qfY99vbt16+auW7fuoDEfe+yxrtfrdWfPnl3reG5urpucnOwOHjy45tijjz7qSnJnzJhx0NfZf25vv/22K8m98cYbD3pcaWmpW15eftBxAAAQfLx9DwAAhJW0tDT9/ve/r/NjvXr1OuhY69atddlll6m4uFjffvttg7/PHXfcocMOO6zmvzt06KCzzz5bpaWlys3NbfDX+etf/1pzJZck/exnP1OPHj1qjaWiokKvvfaaOnXqdNANyCdPnqz+/fs3+PvtU11drbvvvlt33323fv/73+v888/XaaedJtd19Yc//EEtWrSo9fh77rlHqamptY699dZbKi4u1uWXX64hQ4bUHPd4PHrwwQcVFxenZ599ttbjd+3apSuuuEJ9+/atOR4XF6c//vGPhxzvtGnT1L1791rHfvjhB3311VeaNGmSxo0bV+tj/fr101VXXaWsrKyD3sZ34NwkHTS3+h7XunVrJSYmHnKsAAAgOHj7HgAACCtHHHFErUWe/W3dulX333+/PvjgA61bt0579uyp9fFNmzY1+PsMGzbsoGPdunWTJO3cubNBX2P/t8Ed+HUWLFhQ89+5ubmqqKjQ8OHDD1oQcRxHxx57bKMWwiTJ5/PpnnvukbR3Ealdu3Y65ZRTdP311+uss8466PEjR4486NgPP/wgSQfdd0uSunfvrl69emnFihUqLS1VcnKylixZIkk6/vjjD3r8qFGjFBdX/4+WdX3/r7/+WpK0ZcuWg+7ZJUk5OTk1//fwww/XmWeeqdtuu03XX3+95syZo9NOO02jR48+aLHyxBNP1GGHHab7779fS5Ys0S9+8QuNHj1aAwYMOOhtjQAAIHRYlAIAAGGlc+fOdR4vLCzUiBEjtH79eh133HEaM2aM2rZtK6/Xq8WLF+utt95SRUVFg79PSkrKQcf2Lar4fL4GfY367ksUFxdX64bpJSUlklRzH6UD1TfnQ0lMTDxo971Dqet77BtXfd//sMMO04oVK1RSUqLk5ORDzsPj8ahDhw6N+v6FhYWSpPfee0/vvfdevZ9bVlYmae/N5b/++mvdfffdev/99/Xqq69KkjIzM3XvvffqggsukLT3vHz99de688479c477+j999+XJKWnp2v69Om67rrr6v1eAAAgeFiUAgAAYaW+K1lmzpyp9evX6w9/+INuv/32Wh+7//779dZbbwVjeE2ybwFs69atdX58y5YtzT6GurruG1d937+goKDW4w41D7/fr+3bt6tr166N/v6PPfaYpkyZ8lNTkCQdfvjhev3111VVVaVFixbpgw8+0KOPPqrx48erS5cuOu644yTtvdLr2Wefld/v19KlS/XRRx/p0Ucf1fXXX6927drp4osvbtD3AwAAzYd7SgEAgIiwevVqSdLZZ5990Mfmz58f7OE0Sv/+/ZWYmKhFixYddDWX67q13uoXTEceeaQkae7cuQd9LD8/X6tXr1avXr2UnJwsae9bKyXpyy+/POjxCxcuVHV1daO+/75d9Zoy//j4eB199NG655579Oijj8p1Xb377rsHPc7j8Wjo0KG65ZZb9NJLL0mS3n777UZ/PwAAEHgsSgEAgIjQo0cPSdIXX3xR6/j//u//1rw9K1wlJibq/PPP15YtWzRjxoxaH3v++edr7p0UbGeffbbatGmjZ555RtnZ2TXHXdfVrbfequrqal122WW1Ht+6dWvNnDmzZpFQ2nvT9TvuuKPR33/kyJEaNWqUXnrpJb3yyisHfdzv92vevHk1/71o0aKatxDub9+VXklJSZKk7OzsOq/+OvBxAAAgtHj7HgAAiAgTJkzQAw88oBtuuEGfffaZevTooSVLlmjOnDn65S9/qf/85z+hHuIh3Xffffrkk080ffp0zZs3T0ceeaRyc3P17rvv6rTTTtPs2bPl8QT33wtTUlL01FNP6eKLL9aoUaM0fvx4dezYUZ988okWLVqkkSNHatq0aTWPb9u2rR5++GFdffXVGjZsmC666CK1adNG77//vhITE9WlS5dGz+Gll17SySefrIsuukgzZszQUUcdpRYtWmj9+vVasGCBtm3bVnPvrBdeeEFPPvmkTjzxRPXu3VspKSlatmyZ3n//faWmpmry5MmSpI8//ljTpk3Tcccdp379+ql9+/Zas2aN3n77bSUlJen6668PXEQAANBkLEoBAICI0K1bN82bN0+33HKLPvnkE1VXV+uoo47SRx99pPz8/LBflEpPT9eCBQt066236qOPPtK8efM0bNgwffTRR3rttdck1X3z9eZ2wQUXKC0tTffdd5/+85//aPfu3crIyNAdd9yhW2+99aCriq666iq1a9dO//M//6Nnn31Wbdq00VlnnaUHHnhAPXr0UO/evRv1/Xv27KkffvhBDz/8sN58800988wz8nq9Ouyww3TiiSfq/PPPr3nsxRdfrPLycn355ZdauHChKioq1K1bN1177bWaNm2aunfvLkkaN26c8vLy9Pnnn+s///mPdu3apa5du2r8+PG65ZZbNHDgQHs4AABg5riu64Z6EAAAALHs+OOP14IFC1RcXKzWrVuHejhNsmrVKvXt21cXXnhhnW/FAwAAOBD3lAIAAAiSzZs3H3TsxRdf1Jdffqkx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XTWfE07nad8PwH6/X8uWLWuW8xSNz719c9q8eXPN67h9+/ZRMadgnyev11vrz8JomFOwz1O7du0kSZs2bVJRUVFUzCmY58l13Zrn4JAhQ6JiTsE+T5s2bar1Oo6GOQX7PA0cOFA+n6/Wn4WRPqdgnyfXdbVnzx5Jipo5ScE7T8uXL1egOG4YvYly06ZN6tq1q7766isdc8wxNcdvueUWzZs3T998802tx5eWlmrIkCH6+9//rtNPP12SdNlll2nnzp168803JUmLFi3SGWecoe+//77mXlIZGRm68cYbdeONN9Y5jrqulEpPT1dhYaFSUlIkhX5lsjGrrVVVVVq5cqX69OlTc0OycFxtDecVZNd1tWrVKvXq1avWTd0ieU6huFJq1apV6t+/vxzHiYo5Hep4oOdUWVmpVatW1byOo2FOobhSasWKFerdu3fN6zgc5vTlqu268vlFqvS5unhkd/3pnEENOh/1HW/uK6VWr16tvn371vwQ/FNz5bn33+PV1dU1r+O4uLiomFOwz5PP59OKFStq/UwT6XOqa+zNfaXU6tWr1bt375rvE+lzCvaVUvtex/tuCRLpc2rI8UDO6cDfTaJhTqG4UmrlypW1fqaJ9DmF4kqp1atXq1+/fjpQpM7pUGMP9Jx27Nihjh07qri4uGaNpKnCalGqsrJSLVu21Ouvv15rB71JkyZp586deuutt2o9fvHixTryyCNrvRD3RfN4PMrNzdU777yjqVOn1vpLd9/ltunp6crLy/vJcZWUlKhNmzYBCQ4AwD6L83fqV099rd2VPv18cJoeu/goeT3OT38iAAAAECKBXCMJqxudJyQkaNiwYZozZ07NMb/frzlz5tS6cmqfzMxMZWVlafHixTX/O+uss3TyySdr8eLFSk9P14QJE7R06dJaj+nSpYumTZumDz/8MJjTCxm/368dO3YctMqJhqOhHQ1t6GcXbg1XbinVZc8s1O5Kn07o20F/HT807Bekwq1hpKGfHQ3taGhDPzsa2tHQjoY2gewWVveUkqSpU6dq0qRJGj58uEaOHKkZM2aorKxMkydPliRNnDhRXbt21X333aekpCQdfvjhtT6/bdu2klRzvH379mrfvn2tx8THxystLU39+/dv/gmFAdd1lZ+fX9MGjUdDOxra0M8unBpuKNqtCTMXaufuKh2R3lZPXDpMiXHen/7E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27dP6+MQERGR4eLle0RERFSp5Y/IeXZkUk5ODn766Sd9laRBoVCgffv22LRpE27duqVenpiYiD///POl22dkZCA2NrbQr+VvX6dOHQCApaUlgKejx57VtGlTeHt7Y9asWUhLSyuwn7t37xZYNn/+fI3nc+fOBQD1PFgPHjwosE3+KKzs7OyiToeIiIgqEI6UIiIiokqtdevWqFKlCiIiIjBixAjIZDKsXLmy1C6fK4mpU6di165daNOmDT744AMolUrMmzcPDRo0QFxc3Au3zcjIQOvWrdGyZUt06tQJNWvWxMOHD7Fp0yYcOnQI3bt3R+PGjQE8HRFlZ2eHhQsXwtraGpaWlmjRogU8PT3x888/IyQkBPXr18eAAQNQvXp13Lx5E/v27YONjQ22bNmicdykpCR07doVnTp1QmxsLFatWoV33nkH/v7+AIDp06fj4MGD6Ny5M9zd3ZGSkoKffvoJNWrUwCuvvFIqORIREVH5wqYUERERVWoODg7YunUrPv74Y0ycOBFVqlRB37590a5dOwQHB+u7PABPRyr9+eef+OSTTzBp0iTUrFkT06dPx8WLF196d0A7OzssWbIE27ZtQ1RUFO7cuQOFQoE6derg22+/xYgRI9Tr5s8xNX78eLz//vvIy8tDVFQUPD09ERQUhNjYWHz++eeYN28e0tLS4OzsjBYtWuC9994rcNzo6GhMnjwZ48aNg5GREYYNG4Zvv/1W/fWuXbvi6tWr+OWXX3Dv3j1UrVoVgYGBmDZtGmxtbXUXHhEREZVbMqk8/RmQiIiIiLTWvXt3nD9/Xn13vPJg6tSpmDZtGu7evYuqVavquxwiIiIqxzinFBEREZEByMzM1HiekJCA7du3IygoSD8FEREREQni5XtEREREBsDLywuRkZHw8vLCtWvXsGDBApiYmODTTz/Vd2lEREREJcKmFBEREZEB6NSpE9asWYM7d+7A1NQUrVq1wpdffgkfHx99l0ZERERUIpxTioiIiIiIiIiIyhznlCIiIiIiIiIiojLHphQREREREREREZU5NqWIiIiIiIiIiKjMsSlFRERERERERERljk0pIiIiIiIiIiIqc2xKERERERERERFRmWNTioiIiIiIiIiIyhybUkREREREREREVObYlCIiIiIiIiIiojL3fyeZOYCXs7/kAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1200x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_training_single(file)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'train' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "Cell \u001b[0;32mIn[14], line 2\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[38;5;66;03m# now use the opensource distill model\u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m \u001b[43mtrain\u001b[49m(task_model_cliet\u001b[38;5;241m=\u001b[39mdeepseek_r1_distilled_model[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmodel_client\u001b[39m\u001b[38;5;124m\"\u001b[39m], task_model_kwargs\u001b[38;5;241m=\u001b[39mdeepseek_r1_distilled_model[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmodel_kwargs\u001b[39m\u001b[38;5;124m\"\u001b[39m],\n\u001b[1;32m      3\u001b[0m       optimizer_model_config\u001b[38;5;241m=\u001b[39mgpt_o3_mini_model,\n\u001b[1;32m      4\u001b[0m       backward_engine_model_config\u001b[38;5;241m=\u001b[39mgpt_o3_mini_model,\n\u001b[1;32m      5\u001b[0m       max_steps\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m12\u001b[39m)\n",
      "\u001b[0;31mNameError\u001b[0m: name 'train' is not defined"
     ]
    }
   ],
   "source": [
    "# now use the opensource distill model\n",
    "train(\n",
    "    task_model_cliet=deepseek_r1_distilled_model[\"model_client\"],\n",
    "    task_model_kwargs=deepseek_r1_distilled_model[\"model_kwargs\"],\n",
    "    optimizer_model_config=gpt_o3_mini_model,\n",
    "    backward_engine_model_config=gpt_o3_mini_model,\n",
    "    max_steps=12,\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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gdb+AduUrH2+eeziy75effVVuLq6Yv/+/fjuu+/wzjvvYPbs2ZZxWy49k+lKunfvju+//x4FBQXYuXMnZs6ciZycHIwbN87yj1A1t523tzdkWUZeXl6dx3Jzc6EoSrN87n333WdZAa24uNhy4/KmqtPHxweyLCM/P7/O861tZ/NrzSs12vrfxIkTGzrVBrOVsZ9++gkHDhzAlClTcODAAXzyySd444038Oqrr+LGG29s9rquhnn75ubmWn3cVvabkrXt2tC/e1czj8t9/j//+c/L5s58iSoAhIaGYunSpcjLy8PBgwfx1ltvQZZlPPHEE1i2bJnleQEBAZg/fz5Onz6No0eP4sMPP4S/vz9mzZqFt99+22adRERkf9iUIiIihzJp0iTo9Xp8+umnVpsAFzOfmdGlSxe4urpi7969KCsrq/M885L21i7Va0pbt261OXbNNddYxlJSUtC1a1d06tSp1nPPnDmD1NTUJq/L2dkZ1113HWbPno158+ZBURT8+uuvAP63TbZs2QJFUWq9TlEUbNmypdbzmpJ5m5j3z8Wac5/5+/tjzJgxOH36NIKDg6+4+lpD6+zZsyeAy+fhYuZV9Xbu3Fmf8lWRkpICALjtttvqPGZtTiLx9vZGeHg4Tp48abWhY2tFxOZ2uVyVlpZi3759cHNzs5wxas6VtbOasrKykJGR0aDP79u3LyRJalTudDodevXqhRdeeMHSjPr555/rPE+SJHTt2hVPPPEE1q9fb/N5RERkv9iUIiIih9KxY0e88MILyM/Px0033WT1cpTy8nK89957lvugGAwGjB8/Hvn5+ZgzZ06t5yYkJGDt2rXo2LGj5Sys5vL666/XukyvqKgIb7zxBiRJqnWWS1hYGE6ePFnrzIby8nI89thjNi8NbKj9+/dbvfTN/JnmM7JCQ0MxfPhwJCUlYfHixbWe++mnn+LYsWMYMWJEnftJNQXzNpk9e3ady99mz55d6zlN7c0338Tq1avx448/XvE+Nw2t84EHHgAAvPbaa7UuuTt9+jQ++OCDOu/fr18/xMbGYtmyZVixYkWdx2VZxubNmxswu6YXFhYGoOZm2xfbvHkzFi1apEZJDXLfffehsrKy1lk/QE1DaO3atarUNHDgQERGRuK3336rczPxN954A+fOncP48eMt95gbNGgQQkND8csvv9RpJM2YMaNBlz0CNZdKjx07Fjt27MA777xTpykN1CwEYG70JyUlXfZsUPMxJS0tDWlpaVd8HhEROQbeU4qIiBzOG2+8gfLycrz//vuIiorCiBEj0L17dzg7O+PUqVP4/fffce7cObzxxhuW17z11lvYvHkz3njjDezYsQOxsbFIS0vDd999B3d3dyxZsqTZb7LbuXNndO/eHXfeeScAYNWqVcjKysK0adPQp08fy/OeeuopPPXUU7jmmmtw1113obq6GuvXr4eiKOjZs6fN1f0a4quvvsLChQsxZMgQREZGwtvbG0ePHsV///tf+Pv7Iz4+3vLcTz75BIMGDcJDDz2EX375Bd26dUNSUhJ+/vlntG7dGp988slV12PNkCFD8NRTT2H+/PmW7aYoimW7TZ06FUOGDGmWzw4PD6+zQlpT1Tl8+HDEx8djyZIliImJwe23346KigqsWLEC1113neUstYstW7YMw4cPxz333IO5c+fi2muvhZubGzIyMrBz507k5eWhvLy8qabfYKNHj0Z4eDjefvttHDlyBN27d0dycjJ+/fVX3H777fj+++9Vq60+XnzxRaxatQoLFizAkSNHMHjwYGRlZWHlypUYPXo0fvnllxa/CbdOp8PSpUsRFxeHm2++GXfffTfCwsKwc+dObNq0CZGRkXjzzTctz9fr9ViwYAFuvfVWjBgxAuPGjUPbtm2xefNmnD59Gj179sThw4cbVMPHH3+M5ORkvPDCC/jqq6/Qv39/+Pr6IjMzE/v27cOJEydw5swZuLu7Y/369Xj++ecxcOBAdO7cGQEBAUhNTcXPP/8MV1dXPPHEEwBqbvp/xx13oF+/fujWrRuCgoJw+vRpSwP42WefbdLtSERE6mJTioiIHI5Op8N7772He++9F5988gm2bNmCLVu2QJZltG3bFnFxcYiPj8fIkSMtr2ndujV2796N119/HT/99BO2bt0KHx8fjBkzBrNmzWr2VcsAYOXKlZg1axaWLVuGs2fPIiIiAvPmzcOTTz5Z63lPPPEEnJ2dMX/+fCxatAi+vr645ZZbMGfOHMsNyK/W+PHjUV5eju3bt2PPnj2oqKhA+/bt8dhjj9VZnj4qKgr79u3D7NmzkZCQgDVr1qB169aIj4/HrFmzLGfJNId58+bhmmuuwSeffIJPP/0UABAdHY3XXnutVuNMbQ2tc9GiRejcuTMWLVqEDz/8EO3bt8e0adMwduxYq02piIgIHDx4EO+99x5+/PFHLFmyBHq9Hm3btsWQIUNw1113NfscL8fT0xN//PEHnn/+eWzZsgWbNm1CdHQ0vvnmGwQGBgrflPLy8sKWLVswffp0/PTTT9i3bx+io6OxbNkypKam4pdffmn2e85ZM2jQIOzatQuvvfYa1q1bh6KiIrRr1w5PP/00XnnllTo3y7/pppuwbt06zJw5EytXroSbmxuuv/56rFixAjfffHOD5+Dv748dO3bgww8/xIoVK/DNN99AlmUEBQWhZ8+emDFjhqWGuLg4pKWlYcuWLfjhhx9QUlKC4OBgjBs3Di+88AK6desGAOjTpw9efPFFbNq0CWvWrEFhYSGCgoIwcuRIPP/887juuuuaZuMREZEQJMXaubZERETUYoYNG4bNmzdbvfyFiMR2//3345tvvsHRo0fRtWtXtctpFKPRiMDAQMTExGD37t1ql0NERBrCe0oREREREV3BmTNn6oxt3rwZy5cvR1RUlF00pEpLS2E0GmuNmUwmPP/887hw4QLGjBmjTmFERKRZvHyPiIiIiOgKbr75Zri5uaFXr17w8PDA0aNHkZCQAL1ej/nz56tdXr2cOHECgwYNQlxcHDp06ACj0YitW7fi6NGjiI6OxtSpU9UukYiINIZNKSIiIiKiK5g4cSK++eYbLF++HEajEb6+vhg9ejSmT5+O2NhYtcurl+DgYNx9993YvHkzEhISUF1djdDQUDz33HN4+eWX4eHhoXaJRESkMbynFBERERERERERtTjeU4qIiIiIiIiIiFocm1JERERERERERNTi2JQiIiIiIiIiIqIWx6YUERERERERERG1ODaliIiIiIiIiIioxbEpRURERERERERELY5NKSIiIiIiIiIianFsShERERERERERUYtjU4qIiIiIiIiIiFocm1JERERERERERNTi2JQiIiIiIiIiIqIWx6YUERERERERERG1ODaliIiIiIiIiIioxbEpRURERERERERELY5NKSIiIiIiIiIianFsShERERERERERUYtjU4qIiIiIiIiIiFocm1JERERERERERNTi2JQiIiIiIiIiIqIWx6YUERERERERERG1ODaliIiIiIiIiIioxbEpRURERERERERELc5J7QLsgSzLyM7OhpeXFyRJUrscIiIiIiIiIiJhKYoCo9GIdu3aQaezfT4Um1L1kJ2djZCQELXLICIiIiIiIiKyG5mZmWjfvr3Nx9mUqgcvLy8ANRvT29tb5Woaz2QyISkpCdHR0dDr9WqXQ1QL80miYjZJZMwniYz5JFExmyQyR8lncXExQkJCLP0UW9iUqgfzJXve3t5235Ty9PSEt7e3XYebHBPzSaJiNklkzCeJjPkkUTGbJDJHy+eVboHEG51riCRJCAoK4n2xSEjMJ4mK2SSRMZ8kMuaTRMVsksi0lk9JURRF7SJEV1xcDB8fHxQVFdn1mVJERERERERERM2tvn0UnimlISaTCSkpKTCZTGqXQlQH80miYjZJZMwniYz5JFExmyQyreWTTSmNMRqNapdAZBPzSaJiNklkzCeJjPkkUTGbJDIt5ZNNKSIiIiIiIiIianFsShERERERERERUYtjU0pDJElCSEiIZu7iT/aF+SRRMZskMuaTRMZ8kqiYTRKZ1vLJ1ffqgavvERERERERERHVD1ffozpMJhOOHz+umbv4k31hPklUzCaJjPkkkTGfJCpmk0SmtXyyKaUx5eXlapdAZBPzSaJiNklkzCeJjPkkUTGbJDIt5ZNNKSIiIiIiIiIianFsShERERERERERUYtjU0pDdDodOnToAJ2Ou53Ew3ySqJhNEhnzSSJjPklUzCaJTGv5dFK7AGo5kiRx9UASFvNJomI2SWTMJ4mM+SRRMZskMq3lU8jW20cffYTw8HC4uroiNjYWe/bssfncpUuXQpKkWv9zdXWt9RxFUTBz5ky0bdsWbm5uGDlyJE6cONHc0xCOyWRCYmKiZu7iT/aF+SRRMZskMuaTRMZ8kqiYTRKZ1vIp3JlSK1aswLRp07BgwQLExsZi7ty5iIuLQ3JyMtq0aWP1Nd7e3khOTrb8WZKkWo+//fbbmDdvHr744gtERERgxowZiIuLw9GjR+s0sBydVoJN9on5JFExmyQy5vPqVWVno/r8+TrjTn5+cG7XToWK7Jt5e8qyDPnkSZSj5nIUbs+GYzabFrPZtJjPpqXVfArXlHrvvffw0EMPIT4+HgCwYMECrFmzBosXL8ZLL71k9TWSJCEoKMjqY4qiYO7cuXjllVdw2223AQC+/PJLBAYG4scff8Q999zTPBMhIiIiIuFVZWcj5caboFRW1nlMMhgQmfCbQ/9joKlduj0NADL+fozbs2GYzabFbDYt5rNpaTmfQjWlKisrsX//fkyfPt0yptPpMHLkSOzcudPm60pKShAWFgZZlnHttdfi//7v/xAdHQ0AOHXqFHJycjBy5EjL8318fBAbG4udO3eyKUVERESkYdXnz1v9RxUAKJWVOLf0Czjb+PKT6qrKyeH2bCLclk2L27NpcXs2rSttz+rz59mUagn5+fkwmUwIDAysNR4YGIjjx49bfU1UVBQWL16MHj16oKioCO+++y4GDBiApKQktG/fHjk5OZb3uPQ9zY9dqqKiAhUVFZY/FxcXA6g5Pd58irwkSdDpdJBlGYqiWJ5rHr/0VHpb4zqdDpIkWR0HAFmW6zWu1+uhKIrVcXONiqKgY8eOlnpt1W5Pc7rSOOdkX3Pq1KkTFEWp8/fMnufkiPtJa3O6+Ngpy7JDzOlijrKftDonSZIQFRVV69hp73Nq6f106eOXOv/ll5d9nBqG27PpcFs2LW7PpsXt2bQu/TlvDz9z63t7AaGaUo3Rv39/9O/f3/LnAQMGoGvXrli4cCFef/31Rr3nnDlzMHv27DrjSUlJ8PT0BAD4+/sjNDQUWVlZKCgosDwnKCgIQUFBSEtLg9FotIyHhIQgICAAJ06cQHl5uWW8Q4cO8Pb2xtGjR2vttKioKBgMBiQmJtaqISYmBpWVlbXuoaXX6xETEwOj0YjU1FTLuKurK7p06YLz588jMzMTQE2Yvb29ERkZidzc3FqNOXudEwB4eXlxTnY+p5CQEOTn5+P8Rdel2/ucHHE/aXVOiqJAkiSHmpMj7ictzikiIgKenp5ISkqq9YugPc+ppfeTdOQIDLDNY8hglDsbUHnRF5Zubm5wdXNFibEEVVVVlnF3Dw+4uBhQXFRcq3ZPL084Ozuj8HxhrX88ePt4Q6fTofB8Ya3P9PXzhSzLKC4qtoxJkgRfP19UVVWhxFhSa67ePt6oqKhEWWmpZdzZ2RmeXp4ov1COCxcuWMYNLi7w8HBHaWlZs8zJAwrKt223uT1NvXoBf/8+bS9zUms/uVZVonTL1nptS3uZk6r76XQ29IcOXXZ76n187GtOau6nkpLLbk+XAf3h0qqVfc3pb6rsp7Iy4MABm9uzoKAA+Rf9/LOHn7nV1dU253MxSbn0qy8VVVZWwt3dHd9//z3GjBljGZ84cSIKCwvx008/1et97r77bjg5OWHZsmVITU1FZGQkDh48iF69elmeM3ToUPTq1QsffPBBnddbO1MqJCQEBQUFlqUZ7aEzaR4312gymZCUlITo6GgYDAaH+YbzcuOck/3MSVEUHD58GNHR0dDr9Q4xJ0fcT1qc08XHTicnJ4eY08UcZT9pdU6KouDIkSPo1q2b5dhp73Nqyf1UmZ6BrMmTUW3j7HkACF/1PVy6drWbOV1pvLn3U+Wx40i76y7YEvrdSrh262ZXc1JrP1UcO4a0O+u3Le1lTmrup7IjR5Bx91jYYt6e9jQnNfdT+dGjl92e4d9/D7fu0XY1pyuNN+d+utL2DPv+O7h07WpXcyouLoa/vz+KioosfRRrhDpTymAwoHfv3tiwYYOlKSXLMjZs2IAnn3yyXu9hMtUsn3jzzTcDqPkGMSgoCBs2bLA0pYqLi7F792489thjVt/DxcUFLi4udcb1en2tX/iA/+0Ua89t6XFJkqyOX1zjxc+xVbu9zelqxjknceZkMpks73Ppe9nrnC43zjnZ15zMn2N+niPMqSXHOafmm5P5l0hrx86GvA8gzpyacvxycyo7eBBZjz8Bk5WVo6w9v7lqbOi48PtJsvq0Wp976WuEn1MjxptqTpdjbVvaw5zU2k9X2sYXb097mZOa++mKmZVs19jQcXvPXn3mdKXt2dBtIMKcbL32Ug0/+jWzadOmYdGiRfjiiy9w7NgxPPbYYygtLbWsxjdhwoRaN0J/7bXXsG7dOqSmpuLAgQO4//77kZ6ejgcffBBAzYZ55pln8MYbb+Dnn39GYmIiJkyYgHbt2tU6G4uIiIiItKE4YS0yJk6C6fx5uHTuDMlg/QI+yWCAk59fC1dn35z8/Lg9mwi3ZdPi9mxa3J5NS8vbU6gzpQBg3LhxyMvLw8yZM5GTk4NevXohISHBcqPyjIyMWt3A8+fP46GHHkJOTg78/PzQu3dv7NixA90uOi34hRdeQGlpKR5++GEUFhZi0KBBSEhIgKura4vPj4iIiIjUoSgKChYvQe477wAAPEeMQPC778BUWIhqK2dMOfn5OexqR83FuV07RCb8hurz5yHLMk6ePImOHTtCp9NxezbQxdvyUtyWDcdsNi3ms2lpOZ9C3VNKVMXFxfDx8bnitZCiu3jlKEm6wrnVRC2M+SRRMZskMuaz/pTqauT8+98oXLYcAOB3//0InP4SpHpeXkANx3ySqJhNEpmj5LO+fRThLt+j5lVZWal2CUQ2MZ8kKmaTRMZ8XplcWorMJ56oaUhJEgKnv4SgV15mQ6oFMJ8kKmaTRKalfLIppSGyLCM5ObnOnfKJRMB8kqiYTRIZ83llVWdzkfbAAyjdvAWSiwuCP5gL/4kT1S5LE5hPEhWzSSLTWj6Fu6cUEREREVFTKE/+C5mPPorqM2eg9/dHyCcfw61nT7XLIiIior+xKUVEREREDqd0xw5kTX0ackkJDBERCPl0IQwhIWqXRURERBfh5Xsao+e9E0hgzCeJitkkkTGfdRWuWoWMhx+BXFIC9z59EL7sWzakVMJ8kqiYTRKZltaj4+p79eAoq+8REREROTJFUZA3bx7OfbIAAOD9j3+g7f/9GzqDQeXKiIiI6mfLli246aabkJCQgMGDB6tdTqNx9T2qQ1EUFBcXa6rrSvaD+SRRMZskMubzf+TKSmS/8KKlIRXw2KNo987bbEipiPkkUTGbJLIZr7yCgIAAzHjlFbVLaRFsSmmILMtITU3VzF38yb4wnyQqZpNExnzWMBUVIXPKgyj+5RdAr0fbN15Hm6efhiRJapemacwniYrZJFFt2rQJO3ftwuTx47Bj505s2rRJ7ZKaHZtSRERERGS3KrOykDb+XpTt3QudhwdCFi6E7113qV0WERFRg82aORPB/r6IaB2AYH9fvDprltolNTs2pYiIiIjILl04fBhp4+5BZWoqnIKCEPbtt/AcNFDtsoiIiBps06ZN2LJ1K66P6gAJwPVRHbB5yxaHP1uKTSmNcXV1VbsEIpuYTxIVs0ki02o+jb//jvQJE2E6dw4uXbsifMUKuEZ1VrssuoRW80niYzZJNLNmzkT7AD90bdsapvIydG3bGu0D/Bz+bCmuvlcPXH2PiIiISBwFX36Js3PeBBQFHkOHIPg/70Hv6aF2WURERI2yadMmDB8+HPED+yA6ONAynnT6LJZs34eNGzdi2LBh6hXYCFx9j+qQZRnnzp3jDf1ISMwniYrZJJFpLZ+KyYScf/8fzv7fHEBR4HvPOIR89BEbUoLSWj7JfjCbJBrzWVLd2rUBJAmurQMBSUK3dm0c/mwpNqU0RFEUZGZmculTEhLzSaJiNklkWsqnXFaGrKlP4/xXXwEA2jz/HIJmzYLk5KRyZWSLlvJJ9oXZJJGY7yV1Q5dISJIESdLBK7wTJEkHSZJwQ5dIh763FJtSRERERCS06vx8pE+chJINGyAZDAie+z4CpkyBJElql0ZERHRVap0lZYWjny3FphQRERERCasiJQVp4+5BeWIi9L6+CF26FN433qh2WURERFft0rOkrHH0s6XYlNIYLy8vtUsgson5JFExmyQyR85n6a7dSBt/L6pOn4ZzWCjCVyyH+7XXqF0WNYAj55PsG7NJIrB2lpQCBZXF56Hgf5eXOvLZUlx9rx64+h4RERFRyyr66SdkvzIDqKqC27XXov1HH8LJz0/tsoiIiJqErRX3bLG3lfi4+h7VIcsycnJyuMoECYn5JFExmyQyR8ynoijI++gjZL/4ElBVBa+bbkToksVsSNkhR8wnOQZmk0Qwa+ZMeLu7wcVZj5O55yz/S8krQJGHH1LyCmqNuzjr4e3u5nBnS3G5Eg1RFAU5OTlo3bq12qUQ1cF8kqiYTRKZo+VTqazEmVmvomj1agBAwEMPovWzz0LS8XtUe+Ro+STHwWyS2kpLS7Fz1y5UVVVhwabdtR5zdnbGg1164bNt+1BVVVXntTt27kRZWRnc3d1bqtxmxaYUEREREanOVFyMrKefRtnOXYBej6AZM+B3zzi1yyIiImpyHh4eOH36NIqKiuo8Zj6T75lnnoHOypcyPj4+DtOQAtiUIiIiIiKVVZ0+jcxHH0XFiZPQubsjeO778BwyRO2yiIiImk3r1q2tnq1nMplQVlaGyMhI6PV6FSprWWxKaYgkSfD397e51CSRmphPEhWzSSJzhHxeOJKEzMcehSkvH05t2iBk4QK4du2qdlnUBBwhn+SYmE0SmdbyydX36oGr7xERERE1PePGjTg97Z9QLlyAS1QUQhYugHNQkNplERER0VXi6ntUhyzLyMjI4CoTJCTmk0TFbJLI7DmfBd9+i6wnnoRy4QI8Bg5E2DdfsyHlYOw5n+TYmE0SmdbyyaaUhiiKgoKCAvDkOBIR80miYjZJZPaYT0WWcfatt3H2tdcBWYbv3XchZMEn0Ht6ql0aNTF7zCdpA7NJItNaPnlPKSIiIiJqEXJ5ObJfeBHGdesAAK2ffRYBDz+kmftmEBERUW1sShERERFRs6s+dw5Zjz+BC3/+CcnZGW3nzIHPP25RuywiIiJSEZtSGiJJEoKCgvhtJAmJ+SRRMZskMnvJZ0XqKWQ+8giqMjOh8/FByEcfwr1PH7XLomZmL/kk7WE2SWRayydX36sHrr5HRERE1Dhl+/Yh84knIRcVwTkkBCELF8KlQ4TaZREREVEz4up7VIfJZEJKSgpMJpPapRDVwXySqJhNEpno+Sz6dQ0y4idDLiqCa88eCF++jA0pDRE9n6RdzCaJTGv55OV7GmM0GtUugcgm5pNExWySyETMp6IoOPfpIuS9/z4AwOuGG9Dunbehc3VVuTJqaSLmkwhgNklsWsonm1JERERE1GSUqirkvPYaCr/7HgDgHx+PNs8/B0nHE/SJiIioNjaliIiIiKhJmEpKcPrpZ1C6fTug0yHw5X/B/7771C6LiIiIBMWmlIZIkoSQkBDN3MWf7AvzSaJiNklkIuWzKicHmQ8/goq//oLk5obg9/4Dr+HD1S6LVCRSPokuxmySyLSWT66+Vw9cfY+IiIjItvJjx5D5yKOozs2FvnUrhHyyAG7do9Uui4iIiFTC1feoDpPJhOPHj2vmLv5kX5hPEhWzSSITIZ8lW7Yg/b77UZ2bC5dOHRGxfDkbUgRAjHwSWcNsksi0lk82pTSmvLxc7RKIbGI+SVTMJolMzXyeX7ESmY89DrmsDO7XXYewb76Bc3CwavWQeHj8JFExmyQyLeWT95QiIiIiogZRZBl577+Pc4s+AwD4jBmDtq/NhmQwqFwZERER2RM2pYiIiIio3uSKCmS/9BKMvyUAAFo99SRaPf64Zm7ISkRERE2HTSkN0el06NChA3Q6XrVJ4mE+SVTMJomspfNZff48sp54EhcOHACcndH29dfgO2ZMi3w22R8eP0lUzCaJTGv5ZFNKQyRJ4uqBJCzmk0TFbJLIWjKflenpyHz4EVSmp0Pn5YX28+fB47rrWuSzyT7x+EmiYjZJZFrLpzZabwSg5i7+iYmJmrmLP9kX5pNExWySyFoqn2UHDiJt3D2oTE+Hc7t2CF/2LRtSdEU8fpKomE0SmdbyyaaUxmgl2GSfmE8SFbNJImvufBYnJCBj0iSYCgvh2r07wlcsh0vHjs36meQ4ePwkUTGbJDIt5ZNNKSIiIiKqQ1EUnPv8c5x+5lkolZXwHDECYV9+AafWrdUujYiIiBwE7ylFRERERLUo1dXIeeMNFC5fAQDwu/9+BE5/CZJer3JlRERE5EgkRVEUtYsQXXFxMXx8fFBUVGTXNxxTFAXl5eVwdXXlss0kHOaTRMVsksiaI59yaSmypk1D6eYtgCQh8KUX4T9xYpO8N2kLj58kKmaTROYo+axvH4VnSmmMwWBQuwQim5hPEhWzSSJrynxWnc1F5mOPouLoMUiurmj3ztvwvuGGJnt/0h4eP0lUzCaJTEv55D2lNESWZSQmJkKWZbVLIaqD+SRRMZsksqbMZ3nyX0i75x5UHD0Gvb8/wr5YyoYUXRUeP0lUzCaJTGv55JlSRERERBpXumMHsqY+DbmkBIaICIR8uhCGkBC1yyIiIiIHxzOliIiIiDSscNUqZDz8COSSErj37YvwZd+yIUVEREQtgmdKEREREWmQoijImzcP5z5ZAADwHj0abf/9BnQauo8FERERqYur79WDI62+J8sydDqdXd/FnxwT80miYjZJZI3Np1xZiTMvv4LiX34BAAQ89ihaT53KjFOT4vGTRMVsksgcJZ/17aPw8j2NqaysVLsEIpuYTxIVs0kia2g+TUVFyJzyYE1DyskJbf/9Bto8/bRd/+JL4uLxk0TFbJLItJRPNqU0RJZlJCcna+Yu/mRfmE8SFbNJImtoPiuzspA2/l6U7d0LnacnQhYugO+ddzZzlaRVPH6SqJhNEpnW8sl7ShERERFpwIXDh5H52OMwnTsHp7ZtEbJgAVyjOqtdFhEREWkYz5QiIiIicnDF69cjfcJEmM6dg0u3rghfvpwNKSIiIlIdm1Iao9fr1S6ByCbmk0TFbJLIrpTPgi++wOmpT0MpL4fH0CEI/+orOAe2aaHqSOt4/CRRMZskMi3lk6vv1YOjrL5HRERE2qGYTDj75ls4/9VXAADfe8Yh6JVXIDnx7g1ERETUvLj6HtWhKAqKi4vBPiSJiPkkUTGbJDJb+ZTLypD11FRLQ6rN888jaNYsNqSoRfH4SaJiNklkWssnm1IaIssyUlNTNXMXf7IvzCeJitkkkVnLZ3VeHtInTETJH39AMhgQPPd9BEyZDEmSVKyUtIjHTxIVs0ki01o++XUZERERkYOoOHkSmQ8/gqrsbOj9/ND+o4/gfu01apdFREREZJVwTamPPvoI77zzDnJyctCzZ0/Mnz8f/fr1u+Lrli9fjvHjx+O2227Djz/+aBkvKSnBSy+9hB9//BHnzp1DREQEpk6dikcffbQZZ0FERPauKjsb1efPQ5ZlSKdOoVyvh06ng5OfH5zbtVO7PLtj3p6X4vZsHGv5rEw6irPvvAOltBSGsDCEfLoQhrAwtUu1G6fyS7FyXyayzl9Aez83jO0TgohWHmqXZbdO5ZdixZ50JKUVIDo7GeP6hXF7NhKz2bSYzabFfDYtLeZTqBudr1ixAhMmTMCCBQsQGxuLuXPn4rvvvkNycjLatLG9SkxaWhoGDRqEDh06wN/fv1ZT6uGHH8Yff/yBzz77DOHh4Vi3bh0ef/xx/PDDD7j11lvrVZej3OjcZDLhxIkT6NSpk6bu5k/2gfkkkVRlZyPlxpugVFbWeUwyGBCZ8BsbKQ3A7dm0Lrc9AcCle3eELvoUTn5+LVyZ/Vq5LxMvrToMSZKgKIrlv2/d2QN39wlRuzy7Y9mekCBDgQ4SFHB7Ngaz2bSYzabFfDYtR8unXd7o/L333sNDDz2E+Ph4dOvWDQsWLIC7uzsWL15s8zUmkwn33XcfZs+ejQ4dOtR5fMeOHZg4cSKGDRuG8PBwPPzww+jZsyf27NnTnFMRkl6vR5cuXfgPfhIS80kiqT5/3uY/+JXKSqtn/JBt3J5N63LbEwCCXnmZDakGOJVfipdWHYasACZZqfXfF1cdRlp+qdol2pVa21NRoPz9X27PhmM2mxaz2bSYz6al5XwKc/leZWUl9u/fj+nTp1vGdDodRo4ciZ07d9p83WuvvYY2bdpgypQp2Lp1a53HBwwYgJ9//hmTJ09Gu3btsGnTJvz11194//33bb5nRUUFKioqLH8uLi4GUNMAM5lMAABJkqDT6SDLcq274pvHzc+70rhOp4MkSVbHAdS5uZmtcb1eD0VRrI6ba5RlGYWFhfD19YWzs7PN2u1pTlca55zsZ04AcO7cOfj6+lo+y97n5Ij7SStzutJJxDmvzobO8+JTqSVIkrXXmW8sXb/xmm8Yr3bcXIut8bq1NHS8oXMyGUtwORdvT3uZk5r7SS65/C+myt9/NwAx/j6JfoxYsScdEiTU3f+ArAD3f7YbYa3cL91NkCDV3U+NGAesfLSNcUmq+db8qsbNtdgav8o5pZ0rhWzjECorwH2f7UJ4wP+On/YwJ7X2U3p+Wf23pZ3MSc39lJZfv2za05zU3E/1+bse0crTruZ0NeNXO6fLbU9JkrB8bwaeH9W51pjoP3MvfU9bhGlK5efnw2QyITAwsNZ4YGAgjh8/bvU127Ztw+eff45Dhw7ZfN/58+fj4YcfRvv27eHk5ASdTodFixZhyJAhNl8zZ84czJ49u854UlISPD09AQD+/v4IDQ1FVlYWCgoKLM8JCgpCUFAQ0tLSYDQaLeMhISEICAjAiRMnUF5ebhnv0KEDvL29cfTo0Vo7LSoqCgaDAYmJibVqiImJQWVlJZKTky1jer0eMTExMBqNSE1NtYy7urqiS5cuOH/+PDIzM6EoCgoKChAaGopOnTohNzcXOTk5lufb45zMvLy8EBkZyTnZ8ZyCg4ORnJwMDw8PS5PK3ufkiPtJK3Nq9feXEbaUX1IjXR1uz6Z18uRJdO7YUZi/T6IfI5LSCiBfphGdVXgBWYUXbD5ODXO6sBynC8uv/ES6Im7LpsXt2bS4PZuOoihIOXO+1s8/e/iZW11dXa/5CXNPqezsbAQHB2PHjh3o37+/ZfyFF17A5s2bsXv37lrPNxqN6NGjBz7++GPcdNNNAIBJkyahsLCw1j2l3n33XSxatAjvvvsuwsLCsGXLFkyfPh2rV6/GyJEjrdZi7UypkJAQFBQUWK6FtIfOpHncXKPJZEJSUhKio6NhMBgc5hvOy41zTvYzJ0VRcPjwYURHR1su4bP3OTniftLKnCqOHUP6XXfDloCpT8E5OLjW+0iSVKcWc4P10lpsjet0OiiKYn1cVmq+VbvCuAQJkk6yOV6nRlvjTTinysws5M+bB1su3p72Mic191PV6dM4N28+bAn9biXcu3cHIMbfJ9GPEdNW/omf/jwDa3QSMLxLG9wSE1Tn23WdpKu7XLeN8ZbInqzIdb6NtzpurtHW+FXOaU1iDjYm51r9xl8nAcOiWuMfMW3tak5q7ac1iTnYeLye29JO5qTmfvrlcDY2JeddcXva05zU3E+/Jp657PYcHtUGo3u2s6s5XWm8OffT5banXifhocERdnemVHFxMfz9/a94TylhzpRq1aoV9Ho9zp49W2v87NmzCAoKqvP8lJQUpKWlYfTo0ZYx8wZwcnJCcnIy2rVrh3/9619YvXo1brnlFgBAjx49cOjQIbz77rs2m1IuLi5wcXGpM67X6+vc78a8U6w9t6XHJUmyOn5xjRc/x1bt9janqxnnnMSZk8lksrzPpe9lr3O63DjnJPaczL9E2OI1dCjcoqMv+xz6nwtJSZdtSnF7NsyFpKTLNqXMv2ACYvx9utxnNvf4leb085/Z+G9iTp3HLzbjlm4Id/CVj5rSNWH+2Jica/Pxmf+I5vasp2tC/bHxOLdlU+kV6odNyZtsPs7t2TDXhPlfdnvO+AePnQ1xue2pKAru6RvaoJ/RIvzMtfXaSwlzo3ODwYDevXtjw4YNljFZlrFhw4ZaZ06ZdenSBYmJiTh06JDlf7feeiuGDx+OQ4cOISQkBFVVVaiqqqqzo8zfkGmRl5eX2iUQ2cR8kiic/PwgGQxWH5MMBt5EuoG4PZsWt+fVUxQFH286ianLDqJKVtC9nTd0Us230Rf/9607e/AfVQ0U0coDb93Zo/b2lLg9G8PqtmQ2G43ZbFrMZ9PScj6FuXwPAFasWIGJEydi4cKF6NevH+bOnYuVK1fi+PHjCAwMxIQJExAcHIw5c+ZYfb21y/eGDRuG/Px8fPjhhwgLC8PmzZvx2GOP4b333sNjjz1Wr7rqu5QhERE5jvK//sKpO+4EqqsR/MFcOLdvD6CmIeDcrp3K1dmfquxsq6vscXs2Drdn41WZZMz86QiW7am5p9SDgyIw/eauyCwow4p9mcg6fwHt/dwwrk+IQ/8joLml5ZdyezYRbsumxe3ZtLg9m5Yjbc/69lGEakoBwIcffoh33nkHOTk56NWrF+bNm4fY2FgANQ2m8PBwLF261OprrTWlcnJyMH36dKxbtw4FBQUICwvDww8/jGefffaKl2eYOUpTSpZl5Obmok2bNjZP8yNSC/NJoin66Sdkv/gSDB07wuOzRcwmCYnHzoYxllfhiW8PYstfedBJwKzR0Zg4IFztshwW80miYjZJZI6Sz/r2UYS5p5TZk08+iSeffNLqY5s2bbrsa601q4KCgrBkyZImqMz+KYqCnJwctG7dWu1SiOpgPkk0xWvXAQA8R92AM8wmCYrHzvo7U3QB8Uv24niOEW7Oeswffw1Gdgu88gup0ZhPEhWzSSLTWj6Fa0oRERGpzVRSgtJt2wAAXqNG4Uw5lzQmsmdJ2UWYvHQvzhZXoJWnCxZP6oMe7X3VLouIiEjz7PdcMCIiomZSsnETlMpKGCIiYOjYUe1yiOgqbErOxdgFO3G2uAId23hi9eMD2JAiIiISBM+U0hBJkuDv71/ve2kRtSTmk0RiXLcWAOB1Yxx0Oh2zScLisfPyvt2dgRk/HYFJVtC/QwAWPNAbPm7OapelGcwniYrZJJFpLZ/C3ehcRI5yo3MiIroyubQUfw0YCKWiAhE/roZrly5ql0REDSTLCt5Zl4xPNqUAAO64Nhhv3tEDBideJEBERNQS6ttH4U9mDZFlGRkZGZBlWe1SiOpgPkkUJZs3Q6mogHNYKFyiophNEhrzWVd5lQlPrzhkaUg9M7IT/nN3TzakVMB8kqiYTRKZ1vLJn84aoigKCgoKwJPjSETMJ4nCvOqed9yNkCSJ2SShMZ+1nS+txAOf78Yvf2bDSSfh3bt74pmRnTVzCYRomE8SFbNJItNaPnlPKSIior/JZWUo2bIFAOAVN0rlaoioIdLPlWLSkr04lV8KL1cnLLy/NwZ0bKV2WURERHQZbEoRERH9rWTLVigXLsC5fXu4duumdjlEVE/708/joS/3oaC0EsG+blgS3xedA73ULouIiIiugE0pDZEkCUFBQTyFnYTEfJIILKvuxY2yZJHZJJExn8BviWfwzIpDqKiWERPsg88n9UEbL1e1yyIwnyQuZpNEprV8cvW9euDqe0REjk8uL69Zda+sDOHfrYRbTIzaJRHRZSiKgs+2nsL//XYMigKM7NoG88ZfA3cDv3MlIiJSG1ffozpMJhNSUlJgMpnULoWoDuaT1Fa6bRuUsjI4tWsL1+7dLePMJolMq/msNsmY+VMS/v3fmobUxP5hWPhAHzakBKPVfJL4mE0SmdbyyZ/cGmM0GtUugcgm5pPUVJxQc+me96i4OqdLM5skMq3ls7SiGk8tO4g/judCkoBXbumGyQPDNXOZg73RWj7JfjCbJDIt5ZNNKSIi0jy5ogIlGzcCALxvjFO5GiKy5WxxOSYv3Yuk7GK4OOnwwT29cGP3tmqXRURERI3EphQREWle6fYdkEtL4RQUBNcePdQuh4isSM4xIn7JHmQXlSPAw4DPJvbBNaF+apdFREREV4FNKQ2RJAkhISE8vZ2ExHySmoxrEwAAXqNugKSrfbtFZpNEppV8bjuRj8e+3g9jRTU6tPbA0kn9EBrgrnZZdAVaySfZH2aTRKa1fLIppSE6nQ4BAQFql0FkFfNJapErK2H84+9L9+LqXrrHbJLItJDPlfsy8a8fElEtK+gX4Y9PH+gNX3eD2mVRPWghn2SfmE0SmdbyydX3NMRkMuH48eOauYs/2Rfmk9RStnMnZKMRTq1bw+2aa+o8zmySyBw5n4qi4L11yXjh+8OolhXc1qsdvprSjw0pO+LI+ST7xmySyLSWT54ppTHl5eVql0BkE/NJaiheuw4A4DVqVJ1L98yYTRKZI+azotqEl1YlYvXB0wCAp0Z0xLQbOmvmUgZH4oj5JMfAbJLItJRPNqWIiEizlKoqGDdsAAB4xY1SuRoiAoCisio88vU+7EotgF4n4f9u745xfUPVLouIiIiaAZtSRESkWaW7dkMuKoK+VSu49+6tdjlEmpdZUIZJS/YgJa8Uni5O+Pi+azGkc2u1yyIiIqJmwqaUhuh0OnTo0AE6G5enEKmJ+SQ1GNetBQB43TASkl5v9TnMJonMkfJ5KLMQD36xF/kllWjr44ol8X3RJchb7bLoKjhSPsmxMJskMq3lk00pDZEkCd7e/OWOxMR8UktTqqthXP87AOur7pkxmyQyR8nn2qQcPL38IMqrZHRr640l8X0R6O2qdll0lRwln+R4mE0SmdbyqY3WGwGouYt/YmKiZu7iT/aF+aSWVrZnD0yFhdD7+cG9Tx+bz2M2SWSOkM/F207h0a/3o7xKxvCo1lj5aH82pByEI+STHBOzSSLTWj55ppTGaCXYZJ+YT2pJllX3brgBktPlfxwymyQye82nSVbw+q9HsXRHGgDgvthQzL41Gk56fmfqSOw1n+T4mE0SmZbyyaYUERFpjmIywbh+PQCuukekhrLKajy9/BDWHz0LAJh+Uxc8PKQDJElSuTIiIiJqSWxKERGR5pTt3QdTQQH0Pj7w6NdP7XKINCXPWIEHv9iLP7OKYHDS4f2xvXBLj7Zql0VEREQqYFNKQ3Q6HaKiojRzF3+yL8wntSTzqnueI6+H5Ox82ecymyQye8vnyVwjJi3Zi6zzF+Dn7ozPJvZB7zB/tcuiZmJv+STtYDZJZFrLJ5tSGmMwGNQugcgm5pNagmIyofjvS/e8b7yxXq9hNklk9pLPHSn5ePSr/Sgur0Z4gDuWxvdDeCsPtcuiZmYv+STtYTZJZFrKpzZabwQAkGUZiYmJkGVZ7VKI6mA+qaVcOHgQprx86Ly94REbe8XnM5skMnvJ5+qDWZi4eA+Ky6vRJ8wPPzw+kA0pDbCXfJL2MJskMq3lk2dKERGRphQn1Fy65zViBCQNfQtFpAZFUTD/j5N4b/1fAIBberTFf+7uCVdnvcqVERERkQjYlCIiIs1QZBnGdesAcNU9ouZWZZLxrx8S8d3+LADAo0Mj8UJcFHQ6rrBHRERENdiUIiIizbhw6E9U5+ZC5+kJj4ED1S6HyGEVl1fh8a8PYNvJfOh1El67LRr3xYapXRYREREJhk0pDdHpdIiJidHMXfzJvjCf1BKMa/9edW/EcOjqeekes0kiEzGfpwsvIH7JHvx1tgQeBj0+vO9aDI9qo3ZZpAIR80kEMJskNq3lUxuzJIvKykq1SyCyifmk5qTIMor/vnTPOy6uQa9lNklkIuXzyOkijPloO/46W4JAbxesfLQ/G1IaJ1I+iS7GbJLItJRPNqU0RJZlJCcna+Yu/mRfmE9qbuWJiag+cwY6d3d4DBpU79cxmyQykfK54dhZjF24E3nGCnQJ8sKPTwxEdDsftcsiFYmUT6KLMZskMq3lk5fvERGRJhSvrTlLynP4cOhcXFSuhsixfLUzDbN+ToKsAIM7tcLH910LL1dntcsiIiIiwbEpRUREDk9RFBgTEgBw1T2ipiTLCt5MOI5Pt6QCAMb1CcEbt3eHs54n4xMREdGVsSmlMXq9Xu0SiGxiPqm5lB9JQlV2NiQ3N3gOHtzg1zObJDK18lleZcKzKw7htyM5AIDn46Lw+LBISJKkSj0kJh4/SVTMJolMS/mUFEVR1C5CdMXFxfDx8UFRURG8vb3VLoeIiBoo9z//wblFn8HrphvR/v331S6HyO6dK6nAg1/uw8GMQhj0Orxzdw/c1itY7bKIiIhIEPXto/Dcag1RFAXFxcVgH5JExHxSc1EUxXI/qYauumd5PbNJglIjn6l5Jbj94x04mFEIHzdnfDWlHxtSZBWPnyQqZpNEprV8simlIbIsIzU1VTN38Sf7wnxSc6k4dgxVGRmQXF3hOWRIg1/PbJLIWjqfe04V4I5PdiCjoAwh/m744fEBiO0Q0CKfTfaHx08SFbNJItNaPnlPKSIicmiWVfeGDIHO3V3laojs189/ZuO5lX+i0iSjV4gvPpvYB608uZIlERERNR6bUkRE5LC46h7R1VMUBZ9sTsHbCckAgLjoQMwddw3cDNq5CSsRERE1DzalNMbV1VXtEohsYj6pqVX8dQKV6emQDAZ4Dh3W6PdhNklkzZnPKpOMmT8dwbI9mQCABwdFYPrNXaHXcYU9qh8eP0lUzCaJTEv55Op79cDV94iI7FPevHnI//gTeF5/PUI++lDtcojsirG8Ck98exBb/sqDTgJmjY7GxAHhapdFREREdoCr71Edsizj3LlzmrlhGtkX5pOag2XVvRsbvuqeGbNJImuufJ4puoC7F+zElr/y4Oasx6cP9GFDihqMx08SFbNJItNaPtmU0hBFUZCZmamZpSXJvjCf1NQqTp5EZUoKJGdneA4b1uj3YTZJZM2Rz6TsIoz5aDuO5xjR2ssFKx/pj5HdApvs/Uk7ePwkUTGbJDKt5ZP3lCIiIodUnLAWAOAxcCD0Xl4qV0NkHzYl5+KJbw6gtNKETm08sSS+L9r7cdVKIiIiah5sShERkUMyrq1pSnnFNf7SPSIt+XZ3Bmb8dAQmWcGAyAB8cn9v+Lg5q10WEREROTA2pTTGi2cLkMCYT2oqFampqDhxAnB2hteI4Vf9fswmiexq8ynLCt5Zl4xPNqUAAO68tj3m3BEDgxPv8kBXj8dPEhWzSSLTUj7ZlNIQvV6PyMhItcsgsor5pKZkXFdzg3OP/tdB7+NzVe/FbJLIrjaf5VUmPPfdn/j18BkAwLMjO2Pq9R0hSVJTlUgaxuMniYrZJJFpLZ/8CkxDZFlGTk6OZu7iT/aF+aSmZL6flHcTXLrHbJLIriaf50srcf9nu/Hr4TNw1kv4z9098fTITmxIUZPh8ZNExWySyLSWTzalNERRFOTk5GjmLv5kX5hPaiqVaWmoOH4ccHKC1/XXX/X7MZskssbmMy2/FHd8sgP70s/Dy9UJX8T3w5292zdTlaRVPH6SqJhNEpnW8snL94iIyKEUr1sPAPCIjYXe11fdYogEtD/9PB76ch8KSisR7OuGpfF90SlQO/euICIiInGwKUVERA7lf6vujVK5EiLx/JZ4Bs+sOISKahk92vvgs4l90MbLVe2yiIiISKPYlNIQSZLg7+/Pe0WQkJhPagqVmZkoT0oC9Hp4jRzZJO/JbJLI6ptPRVHw2dZT+L/fjkFRgJFdAzFvfC+4G/irIDUfHj9JVMwmiUxr+eRvIhqi0+kQGhqqdhlEVjGf1BTMq+659+sLJ3//JnlPZpNEVp98VptkzP7lKL7alQ4AmDQgHDP+0Q16nTZ+2SX18PhJomI2SWRayydvdK4hsiwjIyNDM3fxJ/vCfFJTKF5b05RqilX3zJhNEtmV8llaUY2Hv9qPr3alQ5KAGf/ohldvjWZDiloEj58kKmaTRKa1fLIppSGKoqCgoEAzd/En+8J80tWqOn0a5YcPA5LUZJfuAcwmie1y+TxbXI6xC3fij+O5cHXW4ZP7emPKoAgVqiSt4vGTRMVsksi0lk9evkdERA7BvOqee58+cGrVSuVqiNSVnGNE/JI9yC4qR4CHAZ9N7INrQv3ULouIiIioFjaliIjIIVhW3bux6S7dI7JH207k47Gv98NYUY0OrT2wdFI/hAa4q10WERERUR1sSmmIJEkICgrSzF38yb4wn3Q1qnJycOHQob8v3buhSd+b2SSRXZrPlfsy8a8fElEtK4iN8MfCB3rD192gcpWkVTx+kqiYTRKZ1vIp3D2lPvroI4SHh8PV1RWxsbHYs2dPvV63fPlySJKEMWPG1Hns2LFjuPXWW+Hj4wMPDw/07dsXGRkZTVy5+HQ6HYKCgqDTCbfbiZhPuirmVffcrr0WzoFtmvS9mU0S1an8Uryz7i/8e+MZvLM2GTN/TMQL3x9GtaxgTK92+HJKPzakSFU8fpKomE0SmdbyKdQsV6xYgWnTpmHWrFk4cOAAevbsibi4OOTm5l72dWlpaXjuuecwePDgOo+lpKRg0KBB6NKlCzZt2oTDhw9jxowZcHV1ba5pCMtkMiElJQUmk0ntUojqYD7pajTHqntmzCaJaOW+TFz/n034dHMqfj2cjQWbU/Hlrpov3J4a0RHvj+sFFye9ylWS1vH4SaJiNklkWsunUE2p9957Dw899BDi4+PRrVs3LFiwAO7u7li8eLHN15hMJtx3332YPXs2OnToUOfxl19+GTfffDPefvttXHPNNYiMjMStt96KNm2a9pt0e2E0GtUugcgm5pMao+psLi4cOAAA8BrVtJfumTGbJJJT+aV4adVhyApgUhQoCmBen0cCcOe17TVzyj+Jj8dPEhWzSSLTUj6FuadUZWUl9u/fj+nTp1vGdDodRo4ciZ07d9p83WuvvYY2bdpgypQp2Lp1a63HZFnGmjVr8MILLyAuLg4HDx5EREQEpk+fbvUyP7OKigpUVFRY/lxcXAygpgFm7lZKkgSdTgdZlmst1Wgev7SraWtcp9NBkiSr4+Y51Gdcr9dDURSr4+YaTSaT5b8Xj19aoz3N6UrjnJP9zAmAJZ+OMidH3E8izql43TpAUeDaqyd0rVtbnttUc7r42Mn9xDmJMKcVe9IhQcL/WlEX1SxJWL4nHS/e1NWu5nRpjY6wnzgnudbx01HmVJ9xzkn8OZlfe+nvnvY8J3ONjrSftDqni4+d9jyn+p7pJUxTKj8/HyaTCYGBgbXGAwMDcfz4cauv2bZtGz7//HMcOnTI6uO5ubkoKSnBm2++iTfeeANvvfUWEhIScMcdd2Djxo0YOnSo1dfNmTMHs2fPrjOelJQET09PAIC/vz9CQ0ORlZWFgoICy3OCgoIQFBSEtLS0Wt3NkJAQBAQE4MSJEygvL7eMd+jQAd7e3jh69GitnRYVFQWDwYDExMRaNcTExKCyshLJycmWMb1ej5iYGBiNRqSmplrGXV1d0aVLF5w/fx6ZmZlQFAUFBQVIT09Hp06dkJubi5ycHMvz7XFOZl5eXoiMjOSc7HhOwcHBKC0tRVJSkqVJZe9zcsT9JOKccn74AToAJTExOHHiRJPPqbi4GAUFBUhKSkJoaCj3E+ek6pz+2JeEnw5kw6TUbUgBgAIFSWk5KC+PsJs5OeJ+4pxq5mT+3TMpKQk9evRwiDk54n7S4pzMv2uWlJQgLS3NIebkiPtJq3PKyMiwHDu9vb3tdk7V1dWoD0m5tLWokuzsbAQHB2PHjh3o37+/ZfyFF17A5s2bsXv37lrPNxqN6NGjBz7++GPcdNNNAIBJkyahsLAQP/74Y633HD9+PL799lvLa2+99VZ4eHhg2bJlVmuxdqZUSEgICgoK4O3tDcA+OpPmcXONsiyjsLAQvr6+cHZ2tstu66VzutI452Q/cwKAc+fOwdfX1/JZ9j4nR9xPos2pKi8PJ4cMBRQFEevXw7ld2yaf08XHTr1ez/3EObX4nGRZwbaUc1i6Ix2b/8rD5eglCQ8NDueZUpyTEHO6+Pjp5OTkEHOqzzjnJP6cZFlGcXExfH19cSl7nZO5RkfaT1qdk8lkshw7dTqd3c6puLgY/v7+KCoqsvRRrBHmTKlWrVpBr9fj7NmztcbPnj2LoKCgOs9PSUlBWloaRo8ebRkzbwAnJyckJycjJCQETk5O6NatW63Xdu3aFdu2bbNZi4uLC1xcXOqM6/V66PW1bxpq3inWntvS45IkWR0316jX69H670tbLh639fzmqLGh41ea09WOc05izenifDZ1jQ0d536yjzmVbNhQc+lejx5wDWl/xRobM6dLj51NVbutcUfcT5xT4+ZUWlGNHw5kYemONKTklf79uUD/DgHYmXoO1r5WVKDgnn5hlma/aHNq6XHOSd051ff4aU9zqu845yT2nPR6PQICAqw+73I1ijwnM0faT2Zam5NOp6tz7LTHOdl67aWsz0AFBoMBvXv3xoYNGyxjsixjw4YNtc6cMuvSpQsSExNx6NAhy/9uvfVWDB8+HIcOHUJISAgMBgP69u1b69QyAPjrr78QFhbW7HMSjclkwvHjx+t9bSdRS2I+qTGKE9YCALzjRjXbZzCb1NKyzpfh//57DP3nbMCMn5KQklcKTxcnxA8Mx6bnhuHbh67D23f2gE4C9Dqp5r9SzX/furMHwlt5qD0FIgA8fpK4mE0SmdbyKcyZUgAwbdo0TJw4EX369EG/fv0wd+5clJaWIj4+HgAwYcIEBAcHY86cOXB1dUX37t1rvd58+uXF488//zzGjRuHIUOGYPjw4UhISMAvv/yCTZs2tdS0hHLx9aNEomE+qSGqCwpQtmcPAMArLq5ZP4vZpOamKAr2nCrAku1pWHc0B/LfZ0GFB7hj4oBw3NW7PbxcnS3Pv7tPCPqG+2P5nnQkpeUgOjwI9/QLY0OKhMPjJ4mK2SSRaSmfQjWlxo0bh7y8PMycORM5OTno1asXEhISLDc/z8jIsHl6mi233347FixYgDlz5mDq1KmIiorCqlWrMGjQoOaYAhERtRDj778DsgzX6GgY2re/8guIBFReZcIvf2ZjyfY0HD1TbBkf1LEV4geGY3hUG+h0ktXXhrfywPNxUUhMrERMTFS9T5MnIiIiEoVQTSkAePLJJ/Hkk09afexKZzctXbrU6vjkyZMxefLkq6yMiIhEYly7DkDznyVF1Bxyi8vx9a50fLM7A+dKKwEArs463H5Ne8QPDEfnQC+VKyQiIiJqfsI1paj56HQ6dOjQocFnmxG1BOaTGqL6/HmU7toFoHnvJwUwm9S0/swsxJLtp7Am8QyqTDXX6LX1ccWE/uG4p28I/DwMDXo/5pNExnySqJhNEpnW8smmlIZIknTZpRiJ1MR8UkOU/PEHYDLBpWtXGJp54Qpmk65WlUnG2qQcLN52CgcyCi3jvcP8MHlgBOKiA+Gkb9wvnswniYz5JFExmyQyreVTG603AlBzF//ExETN3MWf7AvzSQ1RvLb5V90zYzapsc6XVuLjTScx5O2NePLbgziQUQhnvYTbrwnGz08OxKrHBuCWHm0b3ZACmE8SG/NJomI2SWRayyfPlNIYrQSb7BPzSfVhKipC6c6aS/e8RrXM/aSYTWqI5Bwjlu44hdUHT6O8SgYAtPI04N7YMNwfG4o23q5N+nnMJ4mM+SRRMZskMi3lk00pIiKyK8Y/NgJVVXDp1AkuHSLULocIACDLCv44noslO05h+8lzlvHodt6IHxiB0T3bwsWJq+MRERERXYxNKSIisivGvy/d87qRq+6R+ozlVfhuXxa+2JmG9HNlAACdBMRFByF+YAT6hvtBkiSVqyQiIiISk6QoiqJ2EaIrLi6Gj48PioqK7PqGY4qioLy8HK6urvwFmYTDfFJ9mIxGnBgwEEpVFTr8+gtcOnZs9s9kNsmatPxSLN2Rhu/3Z6GkohoA4O3qhPH9QvFA/zC093NvkTqYTxIZ80miYjZJZI6Sz/r2UXimlMYYDA1bapqoJTGfdCUlGzdCqaqCITKyRRpSZswmATW/JO5IOYcl209hw/FcmL/Wi2ztgUkDI3DntcFwN7T8r1bMJ4mM+SRRMZskMi3lk6vvaYgsy0hMTIQsy2qXQlQH80n1Ubx2HQDAO67lLt1jNulCpQnL9mTgxrlbcd9nu/H7sZqG1LCo1vhicj+sf3YoHrguTJWGFPNJImM+SVTMJolMa/nkmVJERGQXTCWlKN26FQDg1YJNKdKuM0UX8OXOdCzbk4HCsioAgLtBj7t6t8fEAeGIbO2pcoVERERE9o1NKSIisgslmzdBqayEITwcLp07qV0OOShFUXAg4zwWb09DwpEcmOSaa/Ta+7lh0oBw3N0nBD5uzipXSUREROQY2JQiIiK7YEz4e9W9uDi7vukjiamyWsaaxGws2Z6Gw1lFlvHrOvgjfmAERnYNhF7H3BERERE1Ja6+Vw+OtPqeLMvQ6XT8Bx0Jh/mky5FLS/HXgIFQKioQsfoHuHbt2mKfzWw6tvySCny7OwNf7UpHnrECAGBw0mFMr3aYNCAC3dqJ/XOf+SSRMZ8kKmaTROYo+eTqe2RVZWUlXF1d1S6DyCrmk2wp2boVSkUFnEND4dKlS4t/PrPpeJKyi7Bkexp+PpSNSlPNjUTbeLnggevCcG9sKAI8XVSusP6YTxIZ80miYjZJZFrKJ1ff0xBZlpGcnKyZu/iTfWE+6XKK/750zztuVIt/Y8RsOg6TrCDhyBmMXbgTt8zbhu/3Z6HSJKNniC8+uKcXtr04Ak9d38muGlLMJ4mM+SRRMZskMq3lk2dKERGR0OQLF1CyeTMAwGsUV92jhisqq8KKfRn4Ykc6ThdeAAA46STcFNMW8QPDcW2on8oVEhEREWkTm1JERCS0kq1boVy4AOfgYLh2j1a7HLIjJ3NLsHTHKazafxoXqkwAAD93Z9wbG4oHrgtHkI82TosnIiIiEhWbUhqj1+vVLoHIJuaTrDGuXQdA3VX3mE37IcsKNp/Iw5LtadjyV55lvEuQF+IHhuO2XsFwdXas/cl8ksiYTxIVs0ki01I+ufpePTjK6ntERPZGLi/HiQEDIZeVIXzFcrj17Kl2SSSo0opq/HAgC0t2pCE1rxQAIEnA9V0CMXlQOPp3CLDrFWyIiIiI7AlX36M6FEWB0WiEl5cXfzEn4TCfZE3p9u2Qy8rg1LYtXHv0UKUGZlNsmQVl+HJnGpbvzYSxvBoA4OXihLv7hGDigDCEBXioXGHzYj5JZMwniYrZJJFpLZ9cfU9DZFlGamqqZu7iT/aF+SRritf+vereqJZfdc+M2RSPoijYlXoOj3y1D0Pf2YhFW0/BWF6N8AB3vDq6G3b+63rMHN3N4RtSAPNJYmM+SVTMJolMa/nkmVJERCQkubISJX9sBFBzPymi8ioTfv4zG0u2p+HYmWLL+OBOrRA/MBzDOreBTuf43ygSEREROQo2pYiISEil27dDLimBU2Ag3HrxXlJadra4HF/vSse3uzNwrrQSAODqrMMd17ZH/IBwdAr0UrlCIiIiImoMNqU0xtWVy1+TuJhPuphl1b1RoyDp1L3anNlUx6HMQizZfgprDp9BtVyzLks7H1dMGBCOe/qGwNfdoHKFYmA+SWTMJ4mK2SSRaSmfXH2vHrj6HhFRy1IqK/HXoMGQi4sR9vVXcO/TR+2SqIVUmWQkHMnBku2ncCCj0DLeJ8wP8QMjEBcdCCc9b4lJREREJDKuvkd1yLKM8+fPw8/PDzqVzzoguhTzSRcr3bULcnEx9K1bwe2aa1SthdlsOqfyS7FyXyayzl9Aez83jO0TgohWNTcjP19aiW/3ZOCrnenIKS4HADjrJYzu0Q7xAyMQ095HzdKFxXySyJhPEhWzSSLTWj7ZlNIQRVGQmZkJX19ftUshqoP5pItZVt27YRQkvV7VWpjNprFyXyZeWnUYkiRBURRIkoSFm1Pw7MjOOF14AasPnkZFdc0qM608DbgvNgz3XReKNl7aOX29MZhPEhnzSaJiNklkWssnm1JERCQUpaoKJb9vAMBV9xzFqfxSvLTqMGQFgPmuAX//9z/r/7I8r3uwN+IHROAfPdvCxUndZiQRERERNT82pYiISCile/bAVFQEvb8/3Pv0VrscagIr92VCkqT/NaQu0aG1B966swf6hPnVPI+IiIiINIFNKY3x8uKy2SQu5pMAwJhQc+me1w03qH7pnhmzeXWyzl+ArXVVdBIQ3c4HfcP9W7gqx8F8ksiYTxIVs0ki01I+2ZTSEL1ej8jISLXLILKK+SQAUKqrYfz9dwCA941iXLrHbF69tj6utk6SgiRJaO/n1rIFORDmk0TGfJKomE0Smdby6fi3cicLWZaRk5MDWZbVLoWoDuaTAKBs3z6Yzp+H3tcX7n37ql0OAGbzahVdqMK+tALY6ElBURSM6xPSojU5EuaTRMZ8kqiYTRKZ1vLJppSGKIqCnJwcm5dQEKmJ+STgf6vued0wEpKTGCfzMpuNl3W+DHcv2IEDGYUw6CVIEqDXSdBd9N+37uyB8FYeapdqt5hPEhnzSaJiNklkWsunGL/xExGR5ikmE4zray7d8xolxqV71HiJWUWY/MVe5BkrEOjtgsWT+sLD4IQV+zKRdf4C2vu5YVyfEDakiIiIiDSMTSkiIhJC2f79MOXnQ+fjA4/rYtUuh67ChmNn8eS3B3GhyoQuQV5YEt8XbX1q7hv14o1dVK6OiIiIiETBppSGSJIEf39/LrdNQmI+ybh2HQDA6/rrITk7q1zN/zCbDfPVzjTM+jkJsgIM7tQKH993Lbxcxdmfjob5JJExnyQqZpNEprV8SopWLlS8CsXFxfDx8UFRURG8vb3VLoeIyOEosoyTQ4ehOi8PIQsXwHPoULVLogaSZQVzfjuGRVtPAQDu6RuC18d0h7Oet68kIiIi0pr69lH4m6KGyLKMjIwMzdzFn+wL86ltFw4eRHVeHnReXvDo31/tcmphNq+svMqEJ749YGlIPR8XhTl3xLAh1QKYTxIZ80miYjZJZFrLJ39b1BBFUVBQUKCZu/iTfWE+tc2y6t6IEZAMBpWrqY3ZvLz8kgqMX7QLvx3JgUGvwwf39MITwztq5pRztTGfJDLmk0TFbJLIVq9ejffnvo/Vq1erXUqLYFOKiIhUpcgyjOvWAwC84rjqnj1JySvBHR/vwMGMQvi4OePrB2NxW69gtcsiIiIiskurVq3CffffhyqlCvfdfx9WrVqldknNjk0pIiJS1YU//0R1Tg50Hh7wGDhA7XKonvacKsAdH+9ARkEZQv3d8cPjA9Avwl/tsoiIiIjs0qpVqzB23Fh49/aGT6wPvHt7Y+y4sQ7fmGJTSkMkSUJQUBAvqSAhMZ/aZV51z3PECOhcXFSupi5ms66fDp3G/Z/tRtGFKvQK8cUPjw9AZGtPtcvSJOaTRMZ8kqiYTRKNpSHV1xtBk4OQbEpG0OQgePd1/MYUm1IaotPpEBQUBJ2Ou53Ew3xqk6IoKF5Xcz8p77hRKldjHbP5P4qi4KONJ/H08kOoNMm4MToIyx++Dq08xWsmagXzSSJjPklUzCaJ5OKGVPBDwVD0CpKrk6HoFQQ/FOzwjSn+LdQQk8mElJQUmEwmtUshqoP51KbyI0dQnX0Gkrs7PAYNUrscq5jNGlUmGdN/SMQ7a5MBAA8NjsDH910LV2e9ypVpG/NJImM+SVTMJoni0oaUpJeghx79Df2hhx6SXnL4xhSbUhpjNBrVLoHIJuZTe4oTEgAAXsOGQufqqnI1tmk9m8byKkz5Yh+W782ETgJeuy0aL9/SDTodL3sQgdbzSWJjPklUzCapzVpDCgAkSGijbwMJf//ZwRtTbEoREZEqFEWx3E/KK+5GlashW84UXcDdC3Ziy195cHPWY9GEPpjQP1ztsoiIiIjslq2GlC2O3Ji66qbUrl27MGfOHDz77LM4ceIEAKCsrAwHDhxASUnJVRdIRESOqfzoUVRlZUFyc4PnkMFql0NWJGUXYcxH23E8x4jWXi5Y+Uh/XN81UO2yiIiIiOxWQxtSZo7amGp0U6qyshJ33HEHBg4ciJdffhnz5s1DZmZmzZvqdBg1ahQ++OCDJiuUrp4kSQgJCeEqEyQk5lN7jAk1Nzj3HDIEOjc3lauxTavZ3JSci7ELduJscQU6B3pi9eMDENPeR+2y6BJazSfZB+aTRMVsklrq05CSIeNQ5SHIkOs85oiNqUY3pWbMmIFff/0Vn3zyCZKTk6EoiuUxV1dX3H333fjpp5+apEhqGjqdDgEBAVxlgoTEfGpLrVX3boxTuZrL02I2v92dgSlf7ENppQkDIgPw3aMD0N7PXe2yyAot5pPsB/NJomI2SQ2KouCRRx+B3kePdlPa2TxDSoaMdFO61aYUUNOYajelHfQ+ejzy6CO1ejH2qNF/C5ctW4bHHnsMDz/8MPz9/es83rVrV6Smpl5VcdS0TCYTjh8/zlUmSEjMp7ZUJCejKj0DkosLPIcMUbucy9JSNmVZwVsJx/Gv1YkwyQru6t0eS+P7wcfNWe3SyAYt5ZPsD/NJomI2SQ2SJGHhgoUwFZmQ/Xk2FJP1ZpIeeoxwHQE9rK9wrJgUZH+eDVORCQsXLLT7M/4a3ZTKzc1FTEyMzcf1ej3Kysoa+/bUTMrLy9Uugcgm5lM7iteaL90bDJ2Hh8rVXJkWslleZcLU5QfxyaYUAMC0Gzrjnbt6wODEb5FFp4V8kv1iPklUzCap4c4778TKFStRvLcYpxedttqYkiDBS/KyrL53McWk4PSi0yjeW4yVK1bizjvvbImym1Wjf9MMCQnB8ePHbT6+fft2dOzYsbFvT0REDkpRFMv9pLxGiX3pnlacL63E/Z/txq+Hz8BZL+G9sT0x9fpOdv/NGxEREZFo6tOYssYRG1LAVTSl7r33XixcuBA7d+60jJl/eV20aBFWrlyJCRMmXH2FRETkUCpOnEDlqVOQDAZ4Dh+mdjmal5Zfijs+2YF96efh5eqELyb3wx3Xtle7LCIiIiKH1dDGlKM2pADAqbEvfPnll7Fr1y4MGTIEXbt2hSRJePbZZ1FQUICsrCzcfPPNePbZZ5uyVrpKOp0OHTp04A39SEjMp3YY164DAHgMGgS9p6fK1VyZI2dzf/p5PPTlPhSUViLY1w1L4/uiU6CX2mVRAzhyPsn+MZ8kKmaTRGBuTI0dNxYALKvxmWDCzoqdMKHmnmeO3JACruJMKYPBgISEBCxZsgQdOnRAly5dUFFRgR49emDp0qX45ZdfoNdbvzEXqUOSJHh7e/NyDBIS86kdRvOqe3GjVK6kfhw1m/9NPIPxi3ahoLQSPdr7YPUTA9iQskOOmk9yDMwniYrZJFFYO2NKgYJcORcKFIdvSAGNbEpduHAB06ZNw6+//or7778fP/74I5KSknDs2DH8+uuvmDBhAv+CC8hkMiExMZGrTJCQmE9tqEhJQcWJk4CzMzxHjFC7nHpxtGwqioJPt6Tg8W8OoLJaxsiugVj+8HVo4+WqdmnUCI6WT3IszCeJitkkkVzamNKb9LjZ7WboTXqHb0gBjWxKubm5YeHChTh79mxT10PNjAdeEhnz6fgsq+4NGAC9l/2cleMo2aw2yZjx0xH8339rFiqZNCAcCx/oDXdDo6/mJwE4Sj7JMTGfJCpmk0RycWMqe3E2nGQnZC/OdviGFHAVl+/17t0bR44cacpaiIjIwZnvJ+UVx1X3WlppRTUe+nIfvt6VAUkCZvyjG169NRp6Hc9sJiIiIlKbpTG1vxhFu4tQvN/xG1LAVdzofO7cubj55pvRvXt3TJo0CU5O/JaViIhsqzh1ChXJyYCTE7xGDFe7HE05W1yOyUv3Iim7GK7OOswddw1u7B6kdllEREREdBFzA2rb9m345utvHL4hBQCSoiiXX3vQhh49eiA/Px9nz56Fi4sLgoOD4ebmVvvNJQl//vlnkxSqpuLiYvj4+KCoqAje3t5ql9NoiqKgvLwcrq6uvOcXCYf5dHz5CxYib+5ceAwejNBFn6pdTr3ZezaP5xRj8pK9yC4qR4CHAZ9N7INrQv3ULouaiL3nkxwb80miYjZJZI6Sz/r2URp9epO/vz8CAgIQFRXV2LcgFRgMBrVLILKJ+XRsxXa26t7F7DWb207k47Gv98NYUY0OrT2wdFI/hAa4q10WNTF7zSdpA/NJomI2SWRaymej7ym1adMmbNy48Yr/a4yPPvoI4eHhcHV1RWxsLPbs2VOv1y1fvhySJGHMmDE2n/Poo49CkiTMnTu3UbXZM1mWkZiYCFmW1S6FqA7m07FVZmSg4ugxQK+H5/XXq11Og9hrNlfuzcSkJXtgrKhGbIQ/fnhsABtSDshe80nawHySqJhNEpnW8tnoplRzWbFiBaZNm4ZZs2bhwIED6NmzJ+Li4pCbm3vZ16WlpeG5557D4MGDbT5n9erV2LVrF9q1a9fUZRMR0WWYV93ziO0HJz9eOtacFEXBf9Yl44VVh1EtKxjTqx2+nNIPvu7a+caNiIiIiOzDVTWlTCYTvvjiC4wdOxaxsbGIjY3F2LFj8eWXXzZ6ic333nsPDz30EOLj49GtWzcsWLAA7u7uWLx48WXruO+++zB79mx06NDB6nNOnz6Np556Ct988w2cnZ0bVRsRETXO/1bdu1HlShxbRbUJz644hPl/nAQAPDWiI94f1wsuTnqVKyMiIiIiqqvRTamioiIMHDgQkydPxrp161BVVYWqqiqsX78e8fHxGDRoEIqLixv0npWVldi/fz9Gjhz5vwJ1OowcORI7d+60+brXXnsNbdq0wZQpU6w+LssyHnjgATz//POIjo5uUE1ERHR1KrNOo/zIEUCng9dI+7p0z54UlVVhwud78OOhbDjpJLx9Zw/8c1SUXd8gk4iIiIgcW6NvdP7yyy9j//79mD9/Ph566CHL2UdVVVX47LPPMHXqVLz88suYP39+vd8zPz8fJpMJgYGBtcYDAwNx/Phxq6/Ztm0bPv/8cxw6dMjm+7711ltwcnLC1KlT61VHRUUFKioqLH82N9dMJpPlDDBJkqDT6SDLMi5ewNA8fumZYrbGdTodJEmyOg6gznWktsb1ej0URbE6bq5RURR069bNUq+t2u1pTlca55zsa07R0dFQFKXO3zN7npMj7qeGzqlobQIAwK1PH0i+vlAUxa7mdPGxU5ZlIfdTxrlSTPlyP1LySuHp4oRP7r8WAyMDatWjxexpYU6SJCEmJqbWsdPe5+SI+0mrc7r4+Hnx75/2PKf6jHNO4s9JURTExMRYfR97nZO5RkfaT1qek/nYaTKZ7HZO9b16rtFNqdWrV+Pxxx/H448/Xmvc2dkZjz32GI4dO4bvv/++QU2phjIajXjggQewaNEitGrVyupz9u/fjw8++AAHDhyo97fFc+bMwezZs+uMJyUlwdPTE0DN6oOhoaHIyspCQUGB5TlBQUEICgpCWloajEajZTwkJAQBAQE4ceIEysvLLeMdOnSAt7c3jh49WmunRUVFwWAwIDExsVYNMTExqKysRHJysmVMr9cjJiYGRqMRqamplnFXV1d06dIF58+fR2ZmJoCaYPj6+iIyMhK5ubnIycmxPN9e5wQAXl5enJOdzykkJAQZGRm1arf3OTnifmrMnPJ/+hkAUNy9OxITE+1yTuZfCETcTxsPn8K01X+hqEJGK3c93hkdgcGdWiMjI0Pz2dPCnCIiImAwGHDixIlavwja85wccT9peU7m46cjzckR95PW5qTT6dCpUydUVlbi1KlTDjEnR9xPWp6T+dhpz3Oqrq5GfUjKpa3FenJ1dcV7771Xpyll9vHHH2PatGm1JnwllZWVcHd3x/fff19rBb2JEyeisLAQP/30U63nHzp0CNdccw30+v/dK8P8C5lOp0NycjJ++eUXTJs2zdLRA2p+OOp0OoSEhCAtLa1OHdbOlAoJCUFBQQG8vb0B2Edn0jxurtFkMiEpKQnR0dEwGAx22W29dE5XGuec7GdOiqLg8OHDiI6Otvydtvc5OeJ+auicTDk5ODniekCS0GHjRji1bmV3c7r42Onk5CTUflp/LA/PrDiI8ioZ0W29sWjCtQjycWP2NDQnRVFw5MgRdOvWrdbvQ/Y8J0fcT1qd08XHT/NVFfY+p/qMc07iz8lkMuHo0aPo3r17nRMX7HVO5hodaT9pdU7V1dWWY6der7fbORUXF8Pf3x9FRUWWPoo1jT5TqmPHjvj5559tNqV+/vlnREZGNug9DQYDevfujQ0bNliaUrIsY8OGDXjyySfrPL9Lly51OnevvPIKjEYjPvjgA4SEhOCBBx6odY8qAIiLi8MDDzyA+Ph4q3W4uLjAxcWlzrg5EBe7uNl16XNbelySJKvjF9d48XNs1W5vc7qacc5JnDmZTCbL+1z6XvY6p8uNa2VOhevXAwDce/eGS1DgFZ/f0PGWmpP5c8zPE2E/fb7tFN5YcxSKAgyPao0P770WHi5ONp/flDU2dJx/n5pvTuZfIq0dOxvyPoA4c2rKcc5J/TmZ6zX/w98R5lSfcc6Jc2qqGhs6zjnZ/5zMx8yLf7bb45xsvfZSjW5KPf7443jyySdx880345lnnkHnzp0BAMnJyZg3bx7Wr1+PDz/8sMHvO23aNEycOBF9+vRBv379MHfuXJSWlloaSBMmTEBwcDDmzJkDV1dXdO/evdbrfX19AcAyHhAQgICAgFrPcXZ2RlBQEKKiohpcHxER1V9xwloAgFdcnMqVOA6TrOD1X49i6Y40AMB9saGYfWs0nPTWfykhIiIiIhLVVTWlcnNz8eabb2Lt2rW1HnN2dsbMmTPx2GOPNfh9x40bh7y8PMycORM5OTno1asXEhISLDc/z8jIsNkNpCurb7eSSA3Mp2OpOnsWFw4eBAB4jRqlcjVXR5RsllVWY+qyQ/j92FkAwL9u7oKHBneo9z0TyTGJkk8ia5hPEhWzSSLTUj4bfU8ps/z8fPz+++9IT08HAISFhWHkyJE2bzxuj4qLi+Hj43PFayGJiOh/Cr76Gmf//W+4XXstwr/9Ru1y7F6usRwPfrEPh7OKYHDS4f2xvXBLj7Zql0VEREREVEd9+yiNPlPKrFWrVrjnnnuu9m2oBSiKAqPRCC8vL36rTsJhPh2P8e+zaL3j7PssKRGyeeKsEZOW7MXpwgvw9zBg0YTe6B3mr0otJBYR8klkC/NJomI2SWRay2ejr4P7/fff8a9//cvm4y+//DL++OOPxr49NQNZlpGamlrnTvlEImA+HUtVbi7K9u8HYP+X7qmdzR0p+bjjkx04XXgBEa088MNjA9iQIgu180l0OcwniYrZJJFpLZ+Nbkq9/vrryMzMtPn46dOn8cYbbzT27YmIyI4Zf/8dUBS49ewJ57a8xKyxVu3PwsTFe2Asr0afMD/88NgAhLfyULssIiIiIqIm0eimVGJiImJjY20+3rdvXxw+fLixb09ERHbMuHYdAK6611iKouCD30/gn9/9iSqTgn/0aIuvH4yFn4dB7dKIiIiIiJpMo+8pVVFRgcrKyss+XlZW1ti3p2bi6uqqdglENjGfjqH63DmU7d0LwP4v3TNryWxWVsuY/kMiVh3IAgA8NiwSz4+Kgk7n+PcUoMbhsZNExnySqJhNEpmW8tno1fdiY2NhMBiwdevWOo8pioLBgwejvLwc+/btu+oi1cbV94iI6u/88hXIefVVuMbEIOK7lWqXY1eKLlThsa/3Y0fKOeh1El6/rTvujQ1VuywiIiIiogapbx+l0ZfvPfXUU9i+fTvuvvtuJCYmorq6GtXV1Th8+DDuvvtu7Ny5E0899VRj356agSzLOHfunGZumEb2hfl0HMZ1jrHqnllLZTPrfBnu+mQHdqScg4dBj88n9mFDiq6Ix04SGfNJomI2SWRay2ejL9+7//77kZKSgtdffx0//PADdLqa/pYsy5AkCa+88gomTpzYZIXS1VMUBZmZmfD19VW7FKI6mE/HUH3+PEp37wHgOJfutUQ2D2cVYsoX+5BnrECQtysWT+qLbu14Zi5dGY+dJDLmk0TFbJLItJbPRjelAGDWrFm4//77sXr1aqSmpgIAIiMjMWbMGERGRjZJgUREZD+Mv/8OmExw6dYVhlCe5VMfvx89i6eWHcSFKhO6BHlhSXxftPVxU7ssIiIiIqJm1+jL98wiIyPx3HPPYerUqWjbti1SUlKwZs0aFBcXN0V9RERkR8yr7nnH3ahyJfbhy51pePirfbhQZcLgTq3w3aP92ZAiIiIiIs1o0JlSH374IebNm4cdO3agVatWlvFff/0Vd911F6qqqmC+b/q8efOwa9euWs8j9Xl5ealdApFNzKd9MxUWonTXLgCA16gbVK6maTV1NmVZwZzfjmHR1lMAgHv6huD1Md3hrL/q74pIg3jsJJExnyQqZpNEpqV8Nui3359//hmRkZG1Gk3V1dWYMmUK9Ho9Fi9ejMTERLz55ptIT0/Hv//97yYvmBpPr9cjMjISer1e7VKI6mA+7Z/xj41AdTVcoqLgEhGhdjlNpqmzWV5lwhPfHrA0pJ6Pi8KcO2LYkKJG4bGTRMZ8kqiYTRKZ1vLZoN+Ajx49iuuuu67W2MaNG5GXl4dnn30WEydORHR0NF544QWMHTsW//3vf5u0WLo6siwjJydHM3fxJ/vCfNq/4rUJAADvG+NUrqRpNWU280sqMH7RLvx2JAcGvQ4f3NMLTwzvCEmSmqBS0iIeO0lkzCeJitkkkWktnw1qSp07dw4hISG1xjZs2ABJknD77bfXGh84cCAyMjKuvkJqMoqiICcnx3KJJZFImE/7ZiouRumOnQAArzjHako1VTZT8kpwx8c7cDCjED5uzvj6wVjc1iu4iaokreKxk0TGfJKomE0Smdby2aB7SgUGBiInJ6fW2NatW+Hu7o6ePXvWGjcYDDAYDFdfIRERCa9k40agqgounTrCpUMHtcsRzp5TBXjoy30oulCFUH93LInvi8jWnmqXRURERESkqgadKdWnTx988cUXMBqNAICkpCTs2bMHcXFxcHKq3d86fvw42rdv33SVEhGRsIoT1gIAvEY51llSTeGnQ6dx/2e7UXShCr1CfPHD4wPYkCIiIiIiQgPPlJo1axb69u2LTp06ITo6Gvv374ckSZg+fXqd565evRojRoxoskLp6kmSBH9/f967hITEfNovU0kJSrdtA+B495MCGp9NRVHw8aYUvLM2GQBwY3QQ5t7TC67O2rhpJbUMHjtJZMwniYrZJJFpLZ8NOlMqJiYGf/zxB3r37o3s7Gxcd911+O9//4vevXvXet6mTZvg7u6Ou+++u0mLpauj0+kQGhoKnY4rPJF4mE/7VbJxE5SqKhg6dIChY0e1y2lyjclmlUnG9B8SLQ2phwZH4OP7rmVDipocj50kMuaTRMVsksi0ls8GnSkFAAMGDMCaNWsu+5xhw4YhMTGx0UVR85BlGVlZWWjfvr1mAk72g/m0X8Z1f1+6FzfKIb/RaWg2jeVVePybA9h6Ih86CXj11mhM6B/e/IWSJvHYSSJjPklUzCaJTGv5dPwZkoWiKCgoKNDMXfzJvjCf9kkuLUXJlq0AAG8HW3XPrCHZPFN0AXcv2ImtJ/Lh5qzHogl92JCiZsVjJ4mM+SRRMZskMq3ls8FnShEREZmVbN4MpaIChrAwuERFqV2OqpKyizB56V6cLa5Aay8XLJ7YFzHtfdQui4iIiIhIWGxKERFRoxWvXQcA8IqLc8hL9+prY3IunvzmAEorTegc6InFk/qivZ+72mUREREREQmNTSkNkSQJQUFBmv6HI4mL+bQ/clkZSrZsAVBzPylHdaVsfrs7AzN+OgKTrGBAZAA+ub83fNycW7hK0ioeO0lkzCeJitkkkWktn2xKaYhOp0NQUJDaZRBZxXzan5ItW6FcuADnkBC4duumdjnNxlY2ZVnB22uTsWBzCgDgrt7t8X+3x8DgxNs1UsvhsZNExnySqJhNEpnW8snfnDXEZDIhJSUFJpNJ7VKI6mA+7Y951T1vB111z8xaNsurTHhq+UFLQ2raDZ3xzl092JCiFsdjJ4mM+SRRMZskMq3lk2dKaYzRaFS7BCKbmE/7IZeXw7hpM4Ca+0k5uouzWVBaiYe/3Id96efhrJfw1p09cMe17VWsjrSOx04SGfNJomI2SWRayiebUkRE1GAlW7dCKSuDc7t2cO3eXe1yms2p/FKs2JOOpLQCRGcnY1Cn1pjxUxJO5ZfCy9UJCx/ojQGRrdQuk4iIiIjILrEpRUREDWbUwKp7K/dl4qVVhyFBgqwo2J55Cgu2nAIABPu6YWl8X3QK9FK5SiIiIiIi+8WmlIZIkoSQkBCH/Qck2Tfm037IFRUo2bgRQM39pBzRqfxSvLTqMGQFABQAgKL87/F543uxIUVC4LGTRMZ8kqiYTRKZ1vLJO7JqiE6nQ0BAAHQ67nYSD/NpP0q374BcWgqnoCC49uihdjnNYuW+TJu/COglCb8fy23hiois47GTRMZ8kqiYTRKZ1vKpjVkSgJq7+B8/flwzd/En+8J82g/j2gQAf6+654A/LE2ygr2nCmCSFauPK1CQdf5CC1dFZB2PnSQy5pNExWySyLSWT16+pzHl5eVql0BkE/MpPrmyEsY/ai7dc7RV94ouVGHF3gx8sSMdpwttN50kSUJ7P7cWrIzo8njsJJExnyQqZpNEpqV8silFRET1VrZzJ2SjEU6tW8OtVy+1y2kSKXklWLo9DasOZKGssuYbKW9XJxjLq2HtXClFUTCuT0jLFklERERE5IDYlCIionorNq+6N8q+L92TZQVbTuRhyfY0bP4rzzIeFeiF+IHhGHNNMH75MxsvrjoMSZKgKAokSFCg4K07eyC8lYeK1RMREREROQY2pTREp9OhQ4cOmrlhGtkX5lN8SlUVjBs2AAC8b7TPS/dKK6rxw4EsLNmRhtS8UgCAJAHXdwnE5IHh6B8ZYLnB+d19QtA33B8r9mbgVJ4REa29MK5vKBtSJBQeO0lkzCeJitkkkWktn2xKaYgkSfD29la7DCKrmE/xle7aDbmoCPpWreB27bVql9MgmQVl+HJnGpbvzYSxvBoA4OnihLF9QjBxQBjCAqw3msJbeeDFm7q2ZKlEDcJjJ4mM+SRRMZskMq3lUxutNwJQcxf/xMREzdzFn+wL8yk+47q1AACvG0ZC0utVrubKFEXBrtRzeOSrfRj6zkYs2noKxvJqhAe449XR3bDrX9dj5uhuNhtSZswmiYz5JJExnyQqZpNEprV88kwpjdFKsMk+MZ/iUqqqYFz/OwDAW/BV98qrTPjlz2ws2Z6Go2eKLeODOrbC5EHhGNa5DXQ6qUHvyWySyJhPEhnzSaJiNklkWsonm1JERHRFZXv3wlRYCL2/P9z79FG7HKtyi8vx9a50fLM7A+dKKwEArs463H5Ne8QPDEfnQC+VKyQiIiIioouxKUVERFdkWXVv5EhITmL96PgzsxBLtp/CmsQzqDIpAIB2Pq54oH84xvcLga+7QeUKiYiIiIjIGrH+ZUHNSqfTISoqSjN38Sf7wnyKSzGZYFy/HgDgFTdK5WpqVJlkJBzJwZLtp3Ago9Ay3ifMD/EDIxAXHQgnfdNkidkkkTGfJDLmk0TFbJLItJZPNqU0xmDgGQMkLuZTTGV798FUUAC9ry88+vVTtZbzpZX4dk8Gvt6VjjNF5QAAZ72E0T3aIX5gBGLa+zTL5zKbJDLmk0TGfJKomE0SmZbyqY3WGwEAZFlGYmIiZFlWuxSiOphPcZlX3fMceT0kZ2dVakjOMeKlVYdx3ZwNeGdtMs4UlaOVpwFPX98J218agffG9Wq2hhSzSSJjPklkzCeJitkkkWktnzxTioiIbFJMJhT/feleS6+6J8sK/jieiyU7TmH7yXOW8eh23ogfGIHRPdvCxUnfojUREREREVHTYVOKiIhsunDwIEx5+dB5e8MjNrZFPtNYXoXv9mXhi51pSD9XBgDQSUBcdBDiB0agb7gfJElqkVqIiIiIiKj5sClFREQ2FSfUXLrndf31kJr52va0/FIs3ZGG7/dnoaSiGgDg7eqE8f1C8UD/MLT3c2/WzyciIiIiopYlKYqiqF2E6IqLi+Hj44OioiJ4e3urXU6jKYoCWZah0+l4lgEJh/kUjyLLODlsOKpzc9F+wSfwGjas6T9DUbD95Dks2X4KfyTnwvwTKbK1ByYNjMCd1wbD3aDu9yfMJomM+SSRMZ8kKmaTROYo+axvH4VnSmlMZWUlXF1d1S6DyCrmUywXDv2J6txc6Dw94TFgQNO+d6UJqw+extIdp/DX2RLL+LCo1ogfGIHBHVtBpxPnhzCzSSJjPklkzCeJitkkkWkpn1x9T0NkWUZycrJm7uJP9oX5FI9xbQIAwHPEcOia6NK97MILeCvhOPq/uQH/Wp2Iv86WwN2gx4T+Ydjwz6FYGt8PQzu3FqohxWySyJhPEhnzSaJiNklkWssnz5QiIqI6FFlG8dp1AADvG2+8uvdSFBzIOI/F29OQcCQHJrnmGr32fm6YNCAcd/cJgY+b81XXTERERERE9oVNKSIiqqM8MRHVOTnQubvDY+DARr1HZbWMNYnZWLI9DYeziizj13XwR/zACIzsGgi9QGdEERERERFRy2JTSmP0er3aJRDZxHyKw3yWlOfw4dC5uDTotfklFfh2dwa+2pWOPGMFAMDgpMOYXu0waUAEurWzvwUjmE0SGfNJImM+SVTMJolMS/nk6nv14Cir7xER1YeiKEi5fiSqsrMRPH8evG+4oV6vS8ouwpLtafj5UDYqTTXXwLfxcsED14Xh3thQBHg2rLlFRERERET2iavvUR2KosBoNMLLy8uul5Ykx8R8iqP8SBKqsrMhubvDc/Dgyz7XJCtYfzQHi7enYc+pAst4zxBfTB4Yjpu6t4XByb7X1GA2SWTMJ4mM+SRRMZskMq3l077/pUANIssyUlNTNXMXf7IvzKc4jOvWAgA8hw6BzsZStEVlVfh0SwqGvL0Rj359AHtOFcBJJ2F0z3b44fEB+OmJgbitV7DdN6QAZpPExnySyJhPEhWzSSLTWj55phQREVkoivK/Vffi4uo8fjK3BEt3nMKq/adxocoEAPBzd8a9saF44LpwBPlYb2IRERERERFdik0pIiKyqDh2DFUZGZBcXeE5ZAgAQJYVbD6RhyXb07DlrzzLc7sEeSF+YDhu6xUMV2ft3IyRiIiIiIiaBptSGuNq41IcIhEwn+qzrLo3ZAgu6A34YWcaluxIQ2peKQBAkoDruwRi8qBw9O8QoInr3AFmk8TGfJLImE8SFbNJItNSPrn6Xj1w9T0i0gJFUZB6402oTE/HnvufxbvVYTCWVwMAPF2cMLZPCCYOCENYgIfKlRIRERERkci4+h7VIcsyzp8/Dz8/P+h09n/zYXIszKe6FEXB3j/2wCs9HRU6J7x5PgAXnKsRHuCOSQPCcVefEHi6aPNHBrNJImM+SWTMJ4mK2SSRaS2f2vwXhkYpioLMzEz4+vqqXQpRHcynOsqrTPj5z2ws2Z6GPn+sxL0A9gd2Qe+u7TF5UDiGdW4DnU4bl+jZwmySyJhPEhnzSaJiNklkWssnm1JERBp0trgcX+9Kx7e7M3CutBIA8Gx2IgBg4JSxmHJ/rJrlERERERGRBgh5LthHH32E8PBwuLq6IjY2Fnv27KnX65YvXw5JkjBmzBjLWFVVFV588UXExMTAw8MD7dq1w4QJE5Cdnd1M1RMRqetUfineSjiOp5YdxFsJx3Eqv9Ty2KHMQjy9/CAGvvkH5v9xEudKK9HOxxWze7gjxHgWkrMzOt12o4rVExERERGRVgh3ptSKFSswbdo0LFiwALGxsZg7dy7i4uKQnJyMNm3a2HxdWloannvuOQwePLjWeFlZGQ4cOIAZM2agZ8+eOH/+PJ5++mnceuut2LdvX3NPRzheXl5ql0BkE/N59Vbuy8RLqw5DkiQoigJJkrBwcwrG9wvFsTPFOJBRaHlunzA/xA+MQFx0IM5/8gnyAXgMGgQ990MdzCaJjPkkkTGfJCpmk0SmpXwKt/pebGws+vbtiw8//BBAzU2+QkJC8NRTT+Gll16y+hqTyYQhQ4Zg8uTJ2Lp1KwoLC/Hjjz/a/Iy9e/eiX79+SE9PR2ho6BVr4up7RGQPTuWX4vr/bIJ8maO6s17C6B7tED8wAjHtfSzjqaNvRcWJE2j75hz4XnS2KRERERERUUPZ5ep7lZWV2L9/P6ZPn24Z0+l0GDlyJHbu3Gnzda+99hratGmDKVOmYOvWrVf8nKKiIkiSZPPGYRUVFaioqLD8ubi4GEBN88tkMgEAJEmCTqeDLMu4uK9nHjc/70rjOp0OkiRZHQdqmnL1Gdfr9VAUxeq4uUZZlpGXl4fWrVvD2dnZZu32NKcrjXNO9jMnAMjJyUHr1q0tn2Xvc2rp/bRiT3rNtrTxXUOfMF98OP4atPZyAVBzTNPr9bhw8iQqTpwAnJzgPmSIZVyEOV1uvKX208XHTr1e7xBzupij7CetzgkA8vLyEBAQUGuFHnuekyPuJ63O6eLjp5OTk0PMqT7jnJP4c5JlGefOnUPr1q1xKXudk7lGR9pPWp2TyWSyHDt1Op3dzsna7yzWCNWUys/Ph8lkQmBgYK3xwMBAHD9+3Oprtm3bhs8//xyHDh2q12eUl5fjxRdfxPjx42126+bMmYPZs2fXGU9KSoKnpycAwN/fH6GhocjKykJBQYHlOUFBQQgKCkJaWhqMRqNlPCQkBAEBAThx4gTKy8st4x06dIC3tzeOHj1aa6dFRUXBYDAgMTGxVg0xMTGorKxEcnKyZUyv1yMmJgZGoxGpqamWcVdXV3Tp0gXnz59HZmYmFEVBQUEBSktL0alTJ+Tm5iInJ8fyfHuck5mXlxciIyM5JzueU3BwMFJTU3H27FlLk8re59SS+8kkK9hyLB8mG6dJ6SSglYczctL+grlK85zyfv655j26d8fRjAxh5mSm9n4qLi5GQUEBzp49i9DQUIeYkyPuJ63OKTw8HDk5OTh79mytX0rteU6OuJ+0Oifz755nz55Fjx49HGJOjriftDgn820OXF1dkZaW5hBzcsT9pNU5Zfw/e/cdHkX1NXD8O7vpFVIghZCE3gISIyWIUgUL0oSgSJNeVEQQG11BURSkCBZAkJ8UBQsKFiT03iUYBBIIkABSEtKT3Xn/wOzLkkICSXaSPZ/nyaN7d3bm3NmTIXv23jvnzpmunW5ubmW2T9nZ2RSGpqbvXbx4EX9/f3bu3Enz5s1N7a+99hpbtmxhz549ZtvfvHmThg0bsmDBAh5//HEA+vfvn+/0vaysLLp378758+eJjIzMtyiV10ipgIAArl27ZnpNWahM5rTnxGgwGDh+/Dj169fHzs6uTFZb7+zT3dqlT2WnT6qqcvToUerXr49ery8XfSqN9ykxNZNvD5xn2e6znLuWRn70OoUhLYMZ+1itXLGf6dyFjOhoKr8zDfeuXS3eJ629T7dfO21sbMpFn25XXt4na+2Tqqr89ddf1KtXz3TtLOt9Ko/vk7X26fbrp62tbbnoU2HapU/a75PBYCAqKooGDRqYvgwt633KibE8vU/W2qfs7GzTtVOv15fZPiUlJeHh4VG2pu95eXmh1+u5dOmSWfulS5fw8fHJtf3p06eJjY2lU6dOprack2BjY0N0dDTVq1cHbhWkevbsydmzZ/nzzz8LPCn29vbY29vnas9JiNvlvCl5bVva7Yqi5Nl+e4y3b5Nf7GWtT/fTLn3STp8MBoNpP3fuq6z2qaD2+40x9t8Ulu6M5dsD50nOuPUthLOdntRMA3l906CqKhEPVc21n8zYWDKio8HGBvd27fL8UFtafbqX9tJ6n3KOk7NdeehTabZLn0quTzl/ROZ17SzKfkA7fSrOdumT5fuUE2/OB//y0KfCtEufpE/FFWNR26VPZb9POdfM2/9tL4t9yu+1d9JUUcrOzo4HH3yQTZs20eW/hXaNRiObNm1i1KhRubavU6dOruFkb7/9Njdv3mTOnDkEBAQA/1+Q+ueff9i8eTOenp4l3hctUhQFDw+PXN8GCKEFkp93p6oqO05dZcmOGP6MvkzOlyI1KrnQPzyIbqH+/Hw0nvF33H1PVVXe796QIC/nXPtM+u13AJybNkWfzzp71k5yU2iZ5KfQMslPoVWSm0LLrC0/NVWUAhgzZgz9+vUjLCyMJk2aMHv2bFJSUhgwYAAAffv2xd/fnxkzZuDg4ECDBg3MXp+zeHlOe1ZWFs888wwHDx5k/fr1GAwG01xMDw8P7OzsSq9zFqbT6Qp1t0EhLEHyM39pmQbWHbrA0p0xnLyUbGpvXdubAS2CaVnTy/SPVo+wAB4K8mDV/jjOX0+jSkVHIsIC8ixIAdzcuBEA144dSr4jZZTkptAyyU+hZZKfQqskN4WWWVt+aq4oFRERwZUrV5g4cSIJCQk88MADbNy40bT4+blz5/IdopaXCxcu8ON/i/g+8MADZs9t3ryZVq1aFVfommc0Gjl//jxVqlQp0jkUojRIfuZ28UYay3ef5Zu957iRmgWAk52eHg9WoV94ENW8XfJ8XZCXM+M71rnr/jPj4kiPigK9Htd27Yo19vJEclNomeSn0DLJT6FVkptCy6wtPzVXlAIYNWpUntP1ACIjIwt87dKlS80eBwUF5Vr8zFrl3AHF39/f0qEIkYvk5y2qqnLw3HUW74hl418JprvpVanoSP/wIHqEBeDuaFssx7r5228AODV5CJuKFYtln+WR5KbQMslPoWWSn0KrJDeFlllbfmqyKCWEENYmM9vIz8cusmRHLEfPJ5ram1XzYECLYNrVrYxeV7zzypN+vVWUcusgU/eEEEIIIYQQpU+KUkIIYUH/JmewYvc5vt5zlis3MwCws9HR5QE/+ocHU88v/zuF3o+sCxdIP3oUdDqZuieEEEIIIYSwCClKWRFFUfDx8bGaVfxF2WJt+fnXhUSW7IjlpyMXyTQYAajkak+fZoE817Qqni72JXr8nLvuOYWFYePlVaLHKuusLTdF2SL5KbRM8lNoleSm0DJry08pSlkRnU6Hj4+PpcMQIk/WkJ8Go8rvUQks3hHL3phrpvZGARV4oUUQjzfwxc6mdBYzvPnrrwC4dnisVI5XlllDboqyS/JTaJnkp9AqyU2hZdaWn1KUsiIGg4F//vmHmjVrotfrLR2OEGYMBgOxsbEEBQWVu/xMTM1i1f5zfLXzLBdupAFgo1N4PMSXAS2CCK1auouMZ8XHk3b4MCgKru3bl+qxy6LynJui7JP8FFom+Sm0SnJTaJm15acUpazI9u3b+e6773jmmWd45JFHLB2OELncvHnT0iEUq1OXk1m6M4bvDlwgLcsAQEUnW55rWpU+zYLwcXewSFw3f781dc/xwVBsK1WySAxlTXnLTVG+SH4KLZP8FFoluSm0zJryU4pSVmTK5CnUqVuHKZOnsOnPTZYOR4hyyWhU2fLPFZbsiGXrySum9jo+rgxoEUTnB/xxsLXsNx6mu+49JnfdE0IIIYQQQliOFKWsRGRkJNt3bOfR5o/xxfYviIyMpFWrVpYOS4hyIyUjm7UHz7NkZyxnrqQAoCjQtk5lXng4iObVPDWxWGHWpcukHTwIgOtjMnVPCCGEEEIIYTlSlLISkyZOwt+zGr7Gxvh7VmPypMlEbom0dFhCmCiKQkBAgCYKN0URdy2VZbtiWbkvjpvp2QC42tvQIyyAfuGBBHo6WzhCczd//x1UFcfGjbG1ogUU70dZzU1hHSQ/hZZJfgqtktwUWmZt+SlFKSsQGRnJ1m1bGdJhGlk3bHms0fN89usEGS0lNEWn0+Hp6WnpMApFVVX2xFxjyY4Yfo+6hFG91R7k6UT/8CCeCQvAxV6bl1e5617RlaXcFNZH8lNomeSn0CrJTaFl1pafpXPvcWFRkyZOomqlmoQEN8OtRgYhwc2oWqkmkydNtnRoQpgYDAb+/vtvDAaDpUPJV3qWgdX743jik+30+mw3vx6/VZBqWdOLxf3D+PPVVvRvEazZglT2v/+Sun8/AG6PSVGqsMpCbgrrJfkptEzyU2iV5KbQMmvLT21+chLF5vZRUoqioLNXURSFjo37ymgpoTnp6emWDiFPl5LS+Xr3Wf635xxXUzIBcLDV0S20CgPCg6hZ2dXCERbOzT/+AFXFoWFDbP38LB1OmaLV3BQCJD+Ftkl+Cq2S3BRaZk35KUWpcs40SiqwuVl7SGBz02gpWVtKiLwdibvBkh0xrD8aT/Z/c/T83B3oGx5Er4cCqOBkZ+EIiyZp462pe24d5K57QgghhBBCCMuTolQ5ducoKVBNz8loKSHylmUwsvGvBJbsiOHguRum9rDAigxoEUyH+pWx0Ze9mc/Z166RuncvIOtJCSGEEEIIIbRBilLlWK5RUkZIPmsLxlsPZbSU0BKdTke1atXQ6SxT8Lmeksn/9p7j691niU+8NVzWVq/QqaEfA1oEE1LF3SJxFZebf/wBRiMO9etjV6WKpcMpUyydm0IURPJTaJnkp9AqyU2hZdaWn1KUKqdyj5ICUMhO1pu2kdFSQksURcHNza3UjxudcJMlO2JYd+gCGdm3KrZeLnb0bhpI72ZVqeTqUOoxlYSb/03dc+0oU/eKylK5KURhSH4KLZP8FFoluSm0zNry0zpKb1Yoz7WkdCruddNB9//T+G4fLSWEJRkMBo4dO1Yqd5kwGlX+iLpE7y9202H2VlbuiyMj20h9Pzdm9WjEjtfb8Er7WuWmIJV9/Tope/YActe9e1GauSlEUUl+Ci2T/BRaJbkptMza8lNGSpVDeY+SukW5owwpo6WElpT0hfdmehZr9p/nq12xnL2aCoBOgQ71fRjQIpiHgirm+p0pD5L//BMMBuzr1sUuMNDS4ZRJ1vJHgSibJD+Flkl+Cq2S3BRaZk35KUWpcmjSxEm4O3viYOvIyYuHTe06vULNQE9OxV/FaPj/0VIOto64O3vK2lKi3Ir9N4WlO2P59sB5kjOyAXBzsOHZJlXp0zyQKhWdLBxhyUr6NeeuezJKSgghhBBCCKEdUpQqZ1JSUti1exdZWVl8sn6s2XO2trYM8h3EFz9/QVZWVq7X7ty1k9TUVJycyvcHdGEdVFVlx6mrLNkRw5/Rl1H/q8PWqORC//AguoX642RX/i+BhsREUnbtBsC1g6wnJYQQQgghhNAORVVV9e6bWbekpCTc3d1JTEwsEwuOXblyhcTExFztqqqSnZ2NjY1NnlOU3N3d8fb2Lo0QhchFVVXS09NxcHC4ryl0aZkG1h26wNKdMZy8lGxqb13bmwEtgmlZ06tcTtHLz4113xP/xhvY16pFtR9/sHQ4ZVJx5aYQJUHyU2iZ5KfQKslNoWXlJT8LW0cp/8MErJC3t3eexSVVVTEajeh0ujKd3KL8srOzu+fXxiemsWzXWb7Ze44bqbdGAjrZ6enxYBX6hQdRzduluMIsU27+N3XPVabu3Zf7yU0hSprkp9AyyU+hVZKbQsusKT/l7ntWxGg0cuzYMYxGo6VDESKXe8lPVVU5cPYaI/93kIff38ynkae5kZpFlYqOvP1kXXa90ZYpnRtYbUHKcPMmKTt2AOAmU/fumVw7hZZJfgotk/wUWiW5KbTM2vJTRkoJIcqczGwjPx+7yJIdsRw9//9TVZtV82BAi2Da1a2MXiejAZM3b0bNysKuRnXsa9SwdDhCCCGE0CCDwZDnerPlmcFgME2R0uv1lg5HCDNlJT9tbW2LJT4pSgkhyox/kzP4355zLN99lis3MwCws9HR5QE/+ocHU89P+2u+laakX38DwO0xGSUlhBBCCHOqqpKQkMCNGzcsHUqpU1UVnU7H2bNnZVkToTllKT8rVKiAj4/PfcUpRSkhhOYdv5jIkh2x/Hj4IpmGW8NYK7vZ06dZIM82qYqni72FI9QeQ3IKKdu2AXLXPSGEEELkllOQqlSpEk5OTpr/8FucystC0qJ8Kgv5qaoqqampXL58GQBfX9973pcUpayITqcjJCQEnU6WEhPaEvNvCqv3nSPuuoGA+JP0fKgqVT2c+D0qgcU7Ytkbc8207QMBFRjQIojHG/hiZyO5fKesixfJvn6d5G3bUTMzsfHzQ83KIuviRWz9/CwdXpkk106hZZKfQsskP7XLYDCYClKenp6WDqfUqaqKg4MDgGY/9AvrVVby09HREYDLly9TqVKle57KJ0UpK5OZmWlKcCG0YPX+OF7/7iiKoqCqKgoKC7ecwd3Rlhtpt9Y3sNEpPB7iy4AWQYRWrWjhiLUr6+JFTnd8HDUz09SWffEisc88g2JnR/WNG6QwdY/k2im0TPJTaJnkpzblrCHl5ORk4UgsR1VVTX/gF9atrORnzjUkKyvrnotS8rWFFTEajURHR1vNKv5C+2L+TeH1745iVMFgVG/9V1VRgRtpWbg52DCydXW2j2/D3GcbS0HqLrKvXzcrSN1Ozcwk+/r1Uo6ofJBrp9AyyU+hZZKf2lcWPvSWlPT0dEuHIES+ykp+Fsc1RIpSQgiLWbXvXL7P6RSIeCiAcR3q4OMu37AKIYQQQghxv/r370+XLl1Mj1u1asXo0aMLfE1QUBCzZ8++72MX135E+SJFKSFEqUvJyGb5rliW7z6LUc1/u4SkjNILqhzIb5SUEEIIIUR5kpCQwMsvv0yNGjVwcHCgcuXKtGjRgk8//ZTU1FTTdkFBQSiKgqIoODs7Exoaypo1awCoW7cuOp3O9PydP/379wfg6aefpmrVqjg4OODr60ufPn24ePFigfG1atUq1/6GDRt2X31+8cUXqVu3bp7PnTt3Dr1ez48//ljk/a5du5Zp06bdV2x3Wrp0KRUqVMjVvm/fPoYMGVKsxxJln6wpZWXudZ6nEMUh7loqy3bFsnJfHDfTswvcVlEUqlR0LKXIyr7sq1dJmDjJ0mGUW3LtFFom+Sm0TPJTFLczZ87QokULKlSowPTp0wkJCcHe3p5jx47x2Wef4e/vz9NPP23afurUqQwePJikpCRmzZpFREQE27ZtY+vWrdjZ2aEoCjt37qR79+5ER0fj5uYG/P8izq1bt+bNN9/E19eXCxcuMHbsWJ555hl27txZYJyDBw9m6tSppsf3u37XwIEDmTdvHjt37iQ8PNzsuaVLl1KpUiWeeOKJIu/Xw8PjvuIqCm9v71I7lig7ZKSUFdHr9YSEhMgfB6JUqarK7jNXGbp8P49+sJnPt8VwMz2bIE8nXmxdHV0+05BVVSUiLKB0gy2jMs7EENvrWTL++cfSoZRLcu0UWib5KbRM8tM6xPybwvsb/+bFbw7x/sa/ifk3pUSPN2LECGxsbNi/fz89e/akbt26VKtWjc6dO/Pzzz/TqVMns+1dXV3x8fGhVq1azJ8/H0dHR9avX09gYCC+vr74+PiYCjOVKlXCx8cHHx8f3N3dAXjllVdo1qwZgYGBhIeH8/rrr7N7927TYvH5cXJyMu3Lx8fHVOy6Vw888AChoaEsXrzYrF1VVZYuXUq/fv1QFIWBAwcSHByMo6MjtWvXZs6cOQXu987pe5cvX6ZTp044OjoSHBzMihUrcr3mo48+IiQkBGdnZwICAhgxYgTJyckAREZGMmDAABITE02jxCZPngzknr537tw5OnfujIuLC25ubvTs2ZNLly6Znp88eTIPPPAAy5cvJygoCHd3d3r16sXNmzeLePbKFkVRcHJyspo136QoZUVUVSUpKQlVLWC+lBDFJD3LwJr9cTz5yXZ6fbabX49fwqhCy5peLO4fxp+vtuLVDnV4v3tDdArodcqt/yq3/vt+94YEeTlbuhual7p/P7HPPktWXBw2vr4otrZ5bqfY2WFTURaKvxdy7RRaJvkptEzys/xbvT+OtrMi+WzrGX4+epHPtp6h7axI1uyPK5HjXb16ld9++42RI0fi7Jz334kFfZC3sbHB1taWjIwMDAZDkXPz2rVrrFixgvDwcGzz+Zsrx4oVK/Dy8qJBgwa88cYbZtMK79XAgQNZvXo1KSn/X/iLjIwkJiaGF154AaPRSJUqVVizZg1RUVFMnDiRN998k9WrVxf6GP379ycuLo7Nmzfz7bffsmDBAi5fvmy2jU6n45NPPuH48eN89dVX/Pnnn7z22msAhIeHM3v2bNzc3IiPjyc+Pp6xY8fmOo7RaKRz585cu3aNLVu28Pvvv3PmzBkiIiLMtjt9+jTff/8969evZ/369WzZsoX33nuvKKetzFFV9Z7ys6yS6XtWxGg0cubMGfnGSpSoy0npfL37LCv2nONqyq01jhxsdXQLrcKA8CBqVnY1275HWAAPBXmwcu9ZjscmUD/Ih15NAqUgVQiJ638m/o03ULOycGjUkIAFC1AzMvK8y55NxYrY+vlZIMqyT66dQsskP4WWSX6WLaqqkpZlKPT2sVf//y7K5Hx4/u+/4787SgN/NwI9C/f3nKOtvlCjQk6dOoWqqtSuXdus3cvLy3S3spEjR/L+++/nem1mZiazZs0iMTGRNm3akJGRYZqidzfjx49n3rx5pKam0qxZM9avX1/g9s899xyBgYH4+flx9OhRxo8fT3R0NGvXri3U8Qra76uvvsqaNWtMa14tWbKEhx9+mFq1agEwZcoU0/bBwcHs2rWL1atX07Nnz7vu/+TJk2zYsIG9e/fy0EMPAfDll1/mWsvq9pFVQUFBvPPOOwwbNowFCxZgZ2eHu7s7iqLg4+OT77E2bdrEsWPHiImJISDg1uyIZcuWUb9+ffbt22c6vtFoZOnSpbi63voM0adPHzZt2sS777571/6UZUXJz7JOilJCiGJxJO4GS3bE8POxeLIMt/4g8XN3oG94EL0eCqCCk12+rw3ycmZch9ocO5ZJSEht+cP1LlRV5epnn3Pl448BcG3fHr8PZqJzuHWXQik+CSGEEKKo0rIM1Jv4a7Hsy6jC43O2F3r7qKkdcLK794+me/fuxWg00rt3bzIyzG+UM378eN5++23S09NxcXHhvffe48knnyQtLa3Q+x83bhwDBw7k7NmzTJkyhb59+7J+/fp8C2m3L+YdEhKCr68vbdu25fTp01SvXj3X9tOnT2f69Ommx1FRUVStWjXXdhUqVKBbt24sXryY/v37k5SUxHfffcf8+fNN28yfP5/Fixdz7tw50tLSyMzM5IEHHihUP0+cOIGNjQ0PPvigqa1OnTq5Fi3/448/mDFjBn///TdJSUlkZ2eTnp5OampqodfOOnHiBAEBAaaCFEC9evWoUKECJ06cMBWlgoKCTAUpAF9f31wjt0TZJkUpIcQ9yzIY2fhXAkt2xHDw3A1Te1hgRQa0CKZD/crY6GWWcHFSs7JImDqVG2u+BcBjwAAqjRuLopPzLIQQQojyrUaNGiiKQnR0tFl7tWrVAPIcWTJu3Dj69++Pi4sLlStXRlGUIk+L8vLywsvLi1q1alG3bl0CAgLYvXs3zZs3L9TrmzZtCtwa6ZVXUWrYsGFmI5n8CviCceDAgbRt25ZTp06xefNm9Ho9PXr0AGDlypWMHTuWWbNm0bx5c1xdXfnggw/Ys2dPUbpboNjYWJ566imGDx/Ou+++i4eHB9u3b2fgwIFkZmbe94Lud7pzmqSiKBiNxmI9hrAsKUpZGYf/RlIIcT+up2Tyv73n+Hr3WeITbw2VttUrdGrox4AWwYRUcb+n/Up+FsyQnMyFl0eTsmMH6HRUfutNPHr3tnRYVkFyU2iZ5KfQMsnPssPRVk/U1A6F3v6j30+yZHsshjwKPHpFYcDDQYxpX6vQxy4MT09P2rdvz7x583jxxRfzXVfqdl5eXtSoUSNX+70uIp1TELlzRFZBDh8+DNwa5ZMXDw+PQt8Fr3Xr1gQHB7NkyRI2b95Mr169TOdhx44dhIeHM2LECNP2p0+fLnScderUITs7mwMHDphGKkVHR3Pjxg3TNgcOHMBoNDJr1ix0/30peueaVXZ2dhgMBU8FrVu3LnFxccTFxZlGS0VFRXHjxg3q1atX6JjLK2tZ5BykKGVV9Ho9derUsXQYogyLTrjJkh0xrDt0gYzsW/8ge7nY0btpIL2bVaWS673/4Sn5WbCshATihgwl4+RJFEdH/D+ahWvr1pYOyypIbgotk/wUWib5WbYoilKkKXS9mwayeHtMns+pqDzfNPC+puTlZ8GCBbRo0YKwsDAmT55Mw4YN0el07Nu3j7///tts6ll+FEUp1Ho9e/bsYd++fTz88MNUrFiR06dPM2HCBKpXr24aJXXhwgXatm3LsmXLaNKkCadPn+Z///sfTzzxBJ6enhw9epRXXnmFRx55hIYNG953/xVF4YUXXuCjjz7i+vXrfPzfcg4ANWvWZNmyZfz6668EBwezfPly9u3bR3BwcKH2Xbt2bTp27MjQoUP59NNPsbGxYfTo0WbnqkaNGmRlZTF37lw6derEjh07WLhwodl+goKCSE5OZtOmTTRq1AgnJ6dcI6jatWtHSEgIvXv3Zvbs2WRnZzNixAgeffRRwsLC7uMMlX2Fzc/yQuZ7WBGj0cjVq1dluKMoEqNR5Y+oS/T+YjcdZm9l5b44MrKNNPB3Y1aPRux4vQ2vtK91XwWpW8eR/MxP+okTxPaMIOPkSfTeXgQuXy4FqVIkuSm0TPJTaJnkZ/kW7OWc+y7KupK/i3L16tU5dOgQ7dq144033qBRo0aEhYUxd+5cxo4dy7Rp0+66D1VVyc7Ovus0PicnJ9auXUvbtm2pXbs2AwcOpGHDhmzZsgV7e3sAsrKyiI6ONt1dz87Ojj/++IPHHnuMOnXq8Oqrr9K9e3d++umn++/8f/r3709iYiL169c3TQ0EGDp0KN26dSMiIoKmTZty9epVs1FThbFkyRL8/Px49NFH6datG0OGDKFSpUqm5xs1asRHH33E+++/T4MGDVixYgUzZsww20d4eDjDhg0jIiICb29vZs6cmes4iqLwww8/ULFiRR555BHatWtHtWrVWLVqVRHPRvlT2PwsLxTVWnp6H5KSknB3dycxMRE3NzdLh3PPDAYDx44dkzugiEK5mZ7Fmv3n+WpXLGev3vpHVqdAxwY+DGgRTFhgxWIdVir5mbfkrVu5MPoVjKmp2NesQcDChdj6+1s6LKsiuSm0TPJTaJnkp3alp6cTExNDcHDwfU+xjP03hVX74zh/PY0qFR2JCAvQ/F2UVVUlLS0NR0dHq5omJcqGspSfBV1LCltHkel7Qggzsf+msHRnLN8eOE9yRjYAbg42PNukKn2aB1KlYvEuXijyd33VahKmTgWDAadmzajyyRz0ZbgwLoQQQojyJ8jLmfEdZZqmEOLeSFFKCIGqquw4dZUlO2L4M/oyOeMna1RyoX94EN1C/UtkTQCRN9Vo5MrHH3P18y8AcO/aFd8pk1Hs7CwcmRBCCCGEEEIUH/mUaWVcXV0tHYLQkLRMA+sOXWDpzhhOXko2tbeu7c2AFsG0rOlVqkNGJT/BmJHBxddf5+aGjQB4vfQiXsOHa37obnknuSm0TPJTaJnkp9CqnDvHCaFF1pSfUpSyInq9nurVq1s6DKEBF2+ksXz3Wb7Ze44bqVkAONnp6fFgFfqFB1HN26XUY5L8hOzr1zk/chRpBw+CrS1+70zDvXNnS4dl9SQ3hZZJfgotk/wUWqUoyn2vpSVESbG2/JSilBUxGo1cvnyZSpUqWVXlVdyiqioHz11n8Y5YNv6VgMF4a45elYqO9A8PokdYAO6OthaLz9rzM/PsWeKGDCXz7Fl0rq5UmTsX52ZN7/5CUeKsPTeFtkl+Ci2T/BRalXN3MxsbGxmNLjTH2vJTilJWRFVVEhIS8Pb2tnQoohRlZhv5+dhFluyI5ej5RFN7s2oeDGgRTLu6ldHrLH+xs+b8TD14iPMjRmC4cQNbPz8CPluEfY0alg5L/Meac1Non+Sn0DLJT6FlWVlZ2NjIx2GhTdaUn9bRSyGs0L/JGazYfY6v95zlys0MAOxsdHR5wI/+4cHU85O7uGlB0saNXHxtPGpmJg4NGhDw6QJs5I93IYQQQpQxqqpaxagOIUTxkqKUEOXMXxcSWbIjlp+OXCTTYASgsps9fZoF8myTqni62Fs4QgG3/nC7tngxlz/4EACXtm3x/2AmOicnC0cmhBBCCFE03333HcOHDeXThYvo3r27pcMRQpQhUpSyIoqi4OHhId9glEMGo8rvUQks3hHL3phrpvYHAiowoEUQjzfwxc5G22s5WFN+qtnZJLzzDjdWrgKgYp8+VH59PIpeb+HIRF6sKTdF2SP5KbRM8tM6fPfdd0RE9MTXGSIierJq1eoyUZjSy99dQsOsKT+1/SlVFCudTkfVqlVloclyJDE1i8+2nuaRmZsZ9vVB9sZcw0an0KmRH2tHhPP9yBZ0fsBf8wUpsJ78NKakEDdy5K2ClKJQ+c038HnrTSlIaZi15KYomyQ/hZZJfpZ/OQWpnvVsOPWiMz3r2RAR0ZPvvvvO0qEVSFEU7O3traJgGhQUxOzZswvcZvLkyTzwwANF2q+iKHz//ff3HJfInzXlJ0hRyqoYjUbOnTuH0Wi0dCjiPp26nMzb3x+j2YxNTP/lby7cSKOiky0jW1dn+/g2zH22MaFVK1o6zCKxhvzMunSZ2D59SNmyFcXBgSpzP8Gjb19LhyXuwhpyU5Rdkp9CyyQ/y7fbC1LLuthjb6OwrIt9qRSmEhISePnll6lRowYODg5UrlyZFi1a8Omnn5KammraLigoCEVRUBQFZ2dnQkNDWbNmDaqqEhgYaHour5/+/fsD8PTTT1O1alUcHBzw9fWlT58+XLx4scD4WrVqlWt/w4YNu+9+30vxaN++fQwZMsT0OK9i0tixY9m0adN9x3f7MQr6mTx58n3tu7wXw1RVJSMjA1VVLR1KqZDpe1ZEVVWuXbuGv7+/pUMR98BoVNnyzxWW7Ihl68krpvY6Pq4MaBFE5wf8cbAtu6Ntynt+pkefJG7oULITEtB7ehLw6QIcGza0dFiiEMp7boqyTfJTaJnkZ/l1Z0HK5r87OdvobhWmoOSm8p05c4YWLVpQoUIFpk+fTkhICPb29hw7dozPPvsMf39/nn76adP2U6dOZfDgwSQlJTFr1iwiIiLYtm0bW7duxc7ODkVR2LlzJ927dyc6Oho3t1s3A3J0dASgdevWvPnmm/j6+nLhwgXGjh3LM888w86dOwuMc/DgwUydOtX02MlC64YW5u6XLi4uuLi4FNsx4+PjTf+/atUqJk6cSHR0tNnxRMEMBoOlQyg1MlJKCI1Lychm+a5Y2n28hQFL9rH15BUUBdrXq8z/Bjdlw8stiXioapkuSJV3yTt2cPa558hOSMCuWjWCVq2UgpQQQgghyqT8ClI5cgpTJTViasSIEdjY2LB//3569uxJ3bp1qVatGp07d+bnn3+mU6dOZtu7urri4+NDrVq1mD9/Po6Ojvz00094e3vj4+ODj48PHh4eAFSqVMnU5u7uDsArr7xCs2bNCAwMJDw8nNdff53du3eTlZVVYJxOTk6mffn4+JiKXcWpf//+dOnShQ8//BBfX188PT0ZOXKkWWy3T98LCgoCoGvXriiKYnp85wisffv20b59e7y8vHB3d+fRRx/l4MGDhY7r9n67u7ujKIpZ28qVK6lbty4ODg7UqVOHBQsWmF6bmZnJqFGj8PX1xcHBgcDAQGbMmFFg/KJsk5FSQmhU3LVUlu2KZeW+OG6mZwPgam9Dz4cC6Nc8iKqecpe2suDGd98RP2kyZGfj9NBDVJk3F/1/f+QIIYQQQpQldytI5SipEVNXr17lt99+Y/r06Tg7O+e5TUHr8NjY2GBra0tmZuY9Hf/atWusWLGC8PBwbG1tC9x2xYoVfP311/j4+NCpUycmTJhQIqOlNm/ejK+vL5s3b+bUqVNERETwwAMPMHjw4Fzb7tu3j0qVKrFkyRI6duyY72LaN2/epF+/fsydOxdVVZk1axZPPPEE//zzD66urvcV74oVK5g4cSLz5s2jcePGHDp0iMGDB+Ps7Ey/fv345JNP+PHHH1m9ejVVq1YlLi6OuLi4IsUvyhYpSlmRnAq1tSyYVhapqsqemGss2RHD71GXMP43jTjI04n+4UE8ExaAi335/LUtb/mpqipX5szh6sJFALg93Qnfd95BZ2dn4chEUZW33BTli+Sn0DLJz/KlsAWpHCVRmDp16hSqqlK7dm2zdi8vL9LT0wEYOXIk77//fq7XZmZmMmvWLBITE2nTps1di0q3Gz9+PPPmzSM1NZVmzZqxfv36Ard/7rnnCAwMxM/Pj6NHjzJ+/Hiio6NZu3ZtoY9ZWBUrVmTevHno9Xrq1KnDk08+yaZNm/IsSuVM5atQoQI+Pj757rNNmzZmjz/77DMqVKjAli1beOqpp+4r3kmTJjFr1iy6desGQHBwMFFRUSxatIh+/fpx7tw5atasycMPP4yiKAQGBhY5/vKgKPlZ1pXPT7ciTzqdrtz/8pZV6VkGfjxykSU7YjkRn2Rqb1nTiwEtgmhVqxK6u/zDX9aVp/w0ZmYS/+ZbJP33B4vn8GF4v/SS/FFeRpWn3BTlj+Sn0DLJz/KjqAWpHKWxxhTA3r17MRqN9O7dm4yMDLPnxo8fz9tvv016ejouLi689957RS6sjBs3joEDB3L27FmmTJlC3759Wb9+fb5/292+sHhISAi+vr60bduW06dPU7169VzbT58+nenTp5seR0VFUbVq1ULFVr9+fbMRQ76+vhw7dqywXcvTpUuXePvtt4mMjOTy5csYDAZSU1M5d+7cfe03JSWF06dPM3DgQLOiWXZ2tmm6ZP/+/Wnfvj21a9emY8eOPPXUUzz22GP3ddyyRlEUKUqJ8slgMBAbG0tQUJAMddSIS0npfL37LP/bc46rKbeGETvY6ugWWoUB4UHUrHx/w2PLkvKSn4YbNzg/6kVS9+8HGxt8p0ymQgn88SVKT3nJTVE+SX4KLZP8LB/utSCVozgLUzVq1EBRFLNFswGqVasG/P/i5LcbN24c/fv3x8XFhcqVK6MoiunuZvb29oX60tDLywsvLy9q1apF3bp1CQgIYPfu3TRv3rxQcTdt2hS4NdIrr6LUsGHD6Nmzp+mxn59fofYLuUfUKIpy33e87NevH1evXmXOnDkEBgZib29P8+bN73naY47k5GQAPv/8c9M5yZFzjQgNDSUmJoYNGzbwxx9/0LNnT9q1a8e33357X8cuS4qan2WdFKWszM2bNy0dggAOx91gyY4Yfj4aT/Z/c/T83B3oGx5Er4cCqOBknVO8ynp+ZsbFETdkKJkxMehcXPCfMxuXFi0sHZYoBmU9N0X5JvkptEzys2xTVZXhw4bi6wxLni56QSqHjU5hydP2bDubzfBhQ+nWrds9fdj29PSkffv2zJs3jxdffDHfdaVu5+XlRY0aNXK132vhJud1d47IKsjhw4eBW6OY8uLh4WFabL2k2dra3vXObjt27GDBggU88cQTAMTFxfHvv//e97ErV66Mn58fZ86coXfv3vlu5+bmRkREBBERETzzzDN07NiRa9eu4eHhUaj4y4P7LSyWJVKUEqKUZBmMbPwrgSU7Yjh47oapPSywIgNaBNOhfmVs9HJDzLIq7cgR4oaPwHDtGja+vgQsXIhD7VqWDksIIYQQ4p4pisKnCxcREdGTAT9m3NNIKYBso8qAHzOIT4FVixfd1+iPBQsW0KJFC8LCwpg8eTINGzZEp9Oxb98+/v77bx588MF73ved9uzZw759+3j44YepWLEip0+fZsKECVSvXt00SurChQu0bduWZcuW0aRJE06fPs3//vc/nnjiCTw9PTl69CivvPIKjzzyCA01cPfloKAgNm3aRIsWLbC3t6dixYq5tqlZsybLly8nLCyMpKQkxo0bl+cotHsxZcoUXnrpJdzd3enYsSMZGRns37+f69evM2bMGD766CN8fX1p3LgxOp2ONWvW4OPjQ4UKFQodvyhb5BOwECXsekom8zefouX7m3nxm0McPHcDW71Ct8b+/DTqYb4dHs6TDX2lIFWGJf3+O2f79sNw7Rr29eoStHKlFKSEEEIIUS50796dVatWszoqm77fZ5hG+RdWtlGl7/cZrI7KLpY1papXr86hQ4do164db7zxBo0aNSIsLIy5c+cyduxYpk2bdl/7v52TkxNr166lbdu21K5dm4EDB9KwYUO2bNmCvf2tKYlZWVlER0eTmpoKgJ2dHX/88QePPfYYderU4dVXX6V79+789NNPxRbX/Zg1axa///47AQEBNG7cOM9tvvzyS65fv05oaCh9+vThpZdeolKlSsVy/EGDBvHFF1+wZMkSQkJCePTRR1m6dCnBwcEAuLq6MnPmTMLCwnjooYeIjY3ll19+QafTFTp+UbYoqqoW7apihZKSknB3dycxMRE3NzdLh3PPjEYj169fp2LFiqZfalFyohNusmRHDOsOXSAj+9bwSy8XO3o3DaR3s6pUcnWwcITaUhbzU1VVrn31FZffnwmqivOjj1Dlo4/QFWIouSg7ymJuCush+Sm0TPJTu9LT04mJiSE4OBgHh8L9TXova0sVd0GquKiqisFgQK/XW8WaPaJsKUv5WdC1pLB1FE3+6zB//nyCgoJwcHCgadOm7N27t1CvW7lyJYqi0KVLF7N2VVWZOHEivr6+ODo60q5dO/75558SiFzbdDodnp6e8kdBMYj5N4X3N/7Ni98c4v2NfxPzbwoABqPK71GXeO7z3XSYvZWV++LIyDbSwN+NWT0aseP1NrzSvpYUpPJQ1vJTNRi49O50Lr/3PqgqFXpFEDB/vhSkyqGylpvCukh+Ci2T/CxfijpiSqsFKbg1LdHGxkbzH/iFdbK2/NTcmlKrVq1izJgxLFy4kKZNmzJ79mw6dOhAdHR0gUMGY2NjGTt2LC1btsz13MyZM/nkk0/46quvCA4OZsKECXTo0IGoqKhCfzNQHhgMBv755x9q1qwpd0C5D6v3x/H6d0dNd+5QFIVFW07zVEM/Dsfd4Ny1W0N3dQp0bODDgBbBhAVWtJqLyr0qS/lpTE3lwqtjSd68GYBK48bh8cIAeY/LqbKUm8L6SH4KLZP8LH9yClMREbfuFJffiCktF6Tg1qCF9PR0HBwc5O83oTnWlp+a+9rio48+YvDgwQwYMIB69eqxcOFCnJycWLx4cb6vMRgM9O7dmylTpphuB5pDVVVmz57N22+/TefOnWnYsCHLli3j4sWLfP/99yXcG+1JT0+3dAhlWsy/Kbz+3VGM6q1RUbf/98cjFzl3LRU3BxuGPlKNra+1ZkHvB3koyMMqLibFoSzkZ/aVK5zt05fkzZtR7Ozwn/0xngNfkPe4nCsLuSmsl+Sn0DLJz/LnbiOmtF6QyiGr2Agts6b81NRIqczMTA4cOMAbb7xhatPpdLRr145du3bl+7qpU6dSqVIlBg4cyLZt28yei4mJISEhgXbt2pna3N3dadq0Kbt27aJXr1659peRkWF2i8+kpCTgVvEr5/aTiqKg0+kwGo1mCZPTfudtKvNr1+l0KIqSZzvkvhVkfu16vR5VVfNsz4nRYDCYzU/NL/ay1Ke7tRd3n1btPYuCAuR9kWhZw5MFvRvj4mAHkGs/WuyTVt4n+P/501rtU/aZM5wbOozsixfRV6yI39xPcPxvgUVreZ+ssU+3XzvLS59uJ30q233KeW156lN5fJ+stU+3Xz/LS58K014W+pSzT1VVC/XhN2eGQI5u3bqxcuUqevWKAP5/xNTtBamVK1fRrVu3XPHndbziai+s2197535KOsaS6pMlY5Q+Fc3d9n3772dpxH4/fboz3tuve3ded/KjqaLUv//+i8FgoHLlymbtlStX5u+//87zNdu3b+fLL7/k8OHDeT6fkJBg2sed+8x57k4zZsxgypQpudqPHz+Oi4sLAB4eHlStWpXz589z7do10zY+Pj74+PgQGxvLzZs3Te0BAQF4enryzz//mH1jVK1aNdzc3IiKijJ702rXro2dnR3Hjh0ziyEkJITMzEyio6NNbXq9npCQEG7evMmZM2dM7Q4ODtSpU4fr168TFxd3a1Hma9c4e/YsNWvW5PLly2bnoCz2KYerqyvVq1cv+T6dvYQxn19YnQJkpnI6+kTZ6pNG3id/f39SUlI4fvy4qUilpT7ZnzyJ7oMPMd68idHHh4zXx3PKxgbX2Firep+ssU9JSUlcu3aN48ePU7Vq1XLRp/L4Pllrn4KCggA4ceKE2R+UZblP5fF9stY+5fztefz4cRo2bFgu+lRe3qegoCDTFKHbrx2Ojo6m9ts5OTlhNBrNvrh/8sknzabyLXnangE//v8Iqaeffpq0tDSzc2Nvb09mZqZZLLa2ttja2pKRkWH2gdbOzg4bG5tcMdrb26PX6832nXOOFUXJ1Z5fn+DWh+bMzEzTY0VRcHR0zNWu0+lwcHAgOzubrKwszfYpr/dJ+lQ2+5SdnU16errm+5SRkWGK687rXnZ2NoWhqbvvXbx4EX9/f3bu3Enz5s1N7a+99hpbtmxhz549ZtvfvHmThg0bsmDBAh5//HEA+vfvz40bN0xT83bu3EmLFi24ePEivr6+ptf27Nnz1siXVatyxZHXSKmAgACuXbtmWjW+LH4jo6oqN2/exNXVFRsbG/mW6R76NP7bI6zaf5686BWFwS2DGNehdpnqk1beJ0VRSExMxMXFxVSU0kqfkn74gYSJkyA7G8fQxvjNnYu+QoW79qk8vk/W2Kfbr506na5c9Ol25eV9stY+KYpCcnIyTk5OpmtnWe9TeXyfrLVPt18/c9aUKut9Kkx7WehTZmYmsbGxpptL3U1BIyy+/fZbevWKwNcZ4lNg5cpVPPPMM5od2ZHDaDSa3sPSjFFGFRWN1mIvrT7lzG4qjdjvp085d9+rVq0a9vb2Zte9pKQkPDw87nr3PU2NlPLy8kKv13Pp0iWz9kuXLuHj45Nr+9OnTxMbG0unTp1MbTknwcbGhujoaNPrLl26ZFaUunTpEg888ECecdjb22Nvb5+rXa/X51qkMa8LWc62pd2uKEqe7bfHWLFixTzb89u+uGMsanth+nQ/7UWJZc+Zq/x8LO/RdQAqKr2aBJq9Vut9Kq724upThdsKPcUdY1Hbc/64+3f+Av6dNw8Atycex3fGDHR5XB+s6X2yxj7dfu0saoxFbZf3SfpU1FgK+kOvrPapuNqlT5bvU2Gun2WtT4Vp13qfbv8C8PaCdkHy2+6ZZ55h1arVDBs6hFWrPjOtIZXf9iXdXlj5navijKW0+1QasUifSqdPNjY2ebYXdT/32343t19D7rzuFfQ7djtNLXRuZ2fHgw8+yKZNm0xtRqORTZs2mY2cylGnTh2OHTvG4cOHTT9PP/00rVu35vDhwwQEBBAcHIyPj4/ZPpOSktizZ0+e+yzPDAYDx44dK/TcTvH/fjh8gT5f7iU5I5uqHo7oFNDrFLP/vt+9IUFezpYOtczSWn6qmZnEv/6GqSDlOXgwfh9+mGdBSpRvWstNIW4n+Sm0TPLTuqjF8EG9tKiqSmpq6n2PeBGiJFhbfmpqpBTAmDFj6NevH2FhYTRp0oTZs2eTkpLCgAEDAOjbty/+/v7MmDEDBwcHGjRoYPb6nJEWt7ePHj2ad955h5o1axIcHMyECRPw8/OjS5cupdUtzZA/CopGVVXmbz7Fh7+dBODxBj58HPEACYnprNofx/nraVSp6EhEWIAUpIqBVvLTkJTE+RdfInXPHtDr8Zk4kYr/rZcgrJNWclOIvEh+Ci2T/Cz/vvvuO3pG9ETvrqdnRE9Wa/iOe0II7dFcUSoiIoIrV64wceJEEhISeOCBB9i4caNpofJz587lO4w1P6+99hopKSkMGTKEGzdu8PDDD7Nx48ZCzZ8W1ivLYOStdcdY/d8aUkMeqcbrHeug0ykEeTkzvmMdC0coSkLm+QvEDRtK5qnT6Jyc8J8zG5eWLS0dlhBCCCGE5uQUpNwecsNvoB8Xv7wohSkLuXNt5eKwdOlSRo8ezY0bN4ptn0LcSVPT93KMGjWKs2fPkpGRwZ49e2jatKnpucjISJYuXZrva5cuXZrrF1FRFKZOnUpCQgLp6en88ccf1KpVq4SiF+VBUnoWLyzdx+r959EpMK1zfd58oi46XdkZliyKLu3YX8T26kXmqdPYVK5M4P9WSEFKCCGEECIPtxek/Af7o7PV4T/YH7eH3OgZ0ZPvvvuuxI6dkJDAyy+/TI0aNXBwcKBy5cq0aNGCTz/9lNTUVNN2QUFBpjVvnJ2dCQ0NZc2aNQDUrVvXtBB8Xj/9+/cH4Omnn6Zq1ao4ODjg6+tLnz59uHjxYoHxtWrVKtf+hg0bdt/9njx5cp6x/vHHH8yZM6fAz8nFbenSpfmeu5yf2NjYe953fmvNivJHcyOlRMnR6XTUrl27yCPNrM3FG2m8sHQffyfcxNFWz7znGtO2bmVLh1XuWTo/b/65mQuvvoqaloZ97doELFqIbR43WBDWx9K5KURBJD+Flkl+ll93FqQU/X8LHesV/Af7A5TYiKkzZ87QokULKlSowPTp0wkJCcHe3p5jx47x2Wef4e/vz9NPP23afurUqQwePJikpCRmzZpFREQE27ZtY+/evRiNRhRFYefOnXTv3p3o6GjTzSMcHR0BaN26NW+++Sa+vr5cuHCBsWPH8swzz7Bz584C4xw8eDBTp041PXZyciqW/tevX58//vjDrM3DwwM7O7ti2X9hRURE0LFjR9Pjbt260aBBA7M+e3t7l2pM5Yk1zeqSfyGsyNq1a6leLZi1a9daOhTN+utCIl3m7+DvhJt4u9qzemhzKUiVotL+xzTHtRUrOD9qFGpaGs4PP0zgiq+lICXMWCo3hSgMyU+hZZKf5U9+BakcOYWpkhoxNWLECGxsbNi/fz89e/akbt26VKtWjc6dO/Pzzz+b3ZkdwNXVFR8fH2rVqsX8+fNxdHTkp59+olKlSvj4+ODj44OHhweAWZu7uzsAr7zyCs2aNSMwMJDw8HBef/11du/eTVZWVoFxOjk5mfbl4+NT4J1Si8LGxsZsvz4+PtjZ2dG/f3+zNZNbtWrFSy+9xGuvvYaHhwc+Pj5MnjzZbF8fffQRISEhODs7ExAQwIgRI0hOTi5UHI6OjrliuL3PDg4ODB06FG9vb9zc3GjTpg1Hjhwxvf7IkSO0bt0aV1dX3NzcePDBB9m/fz+RkZEMGDCAxMRE04irO+O2BsVxh7+yQopSVuK7777j+ed707tnd55/vneJDqctqzb/fZmei3Zx+WYGtSq78P3IFoRUcbd0WFbDaDRy7NgxjEZjqR1TNRq59N77XJr2DhiNVOjxDAGfLkDv4lJqMQjts0RuClFYkp9CyyQ/y5+7FaRylFRh6urVq/z222+MHDkSZ+e8bzJU0Id5GxsbbG1tyczMJC0trcjHv3btGitWrCA8PBxbW9sCt12xYgVeXl40aNCAN954w2xaYWn56quvcHZ2Zs+ePcycOZOpU6fy+++/m57X6XR88sknHD9+nK+++oo///yT1157rViO3aNHDy5fvsyGDRs4cOAAoaGhtG3blmvXrgHQu3dvqlSpwr59+zhw4ACvv/46tra2hIeHM3v2bNzc3IiPjyc+Pp6xY8cWS0xlyb3kZ1klRSkr8N133xER0ZPudW3o1cCG7nVtiCjhed5lzde7zzLwq32kZhpoUcOTb4eH41/B0dJhiRJkTEvjwsujufbf3HvvMWPwmToV5S5/YAghhBBCWKPCFqRylERh6tSpU6iqSu3atc3avby8cHFxwcXFhfHjx+f52szMTGbMmEFiYiJt2rQp0nHHjx+Ps7Mznp6enDt3jh9++KHA7Z977jm+/vprNm/ezBtvvMHy5ct5/vnni3TM/Bw7dszUVxcXF5o0aZLvtg0bNmTSpEnUrFmTvn37EhYWxqZNm0zPjx49mtatWxMUFESbNm145513WL169X3HuH37dvbu3cuaNWsICwujZs2afPjhh1SoUIFvv/0WuHUDs3bt2lGnTh1q1qxJjx49aNSoEXZ2dri7u6MoimnUlYt8YVyuSVGqnMspSPWsZ8OXnezR6+DLTvb0rCeFKQCjUWXGLyd4+/u/MKrwzINVWNK/CW4OUpgoz7KvXuVs//7c/P13FFtb/GZ9iNeQwVY1TFYIIYQQorCKWpDKUdJT+XLs3buXw4cPU79+fTIyMsyeGz9+PC4uLjg5OfH+++/z3nvv8eSTTxZp/+PGjePQoUP89ttv6PV6+vbti6qq+W4/ZMgQOnToQEhICL1792bZsmWsW7eO06dP57n99OnTzQpN586dy3fftWvX5vDhw6afgs5pw4YNzR77+vpy+fJl0+M//viDtm3b4u/vj6urK3369OHq1av3ParryJEjJCcn4+npadavmJgY0zkYM2YMgwYNol27drz33nv5nhtR/slC5+XY7QWpZV3sUf67c5yNTmFZF3sAIiJ6sspKb9manmXg1dVH+PlYPABj2tfixTY1pDBRzmWciSFuyBCyzp9H7+5OlfnzcAoLs3RYQgghhBCadK8FqRzFufh5jRq3/laPjo42a69WrRrw/4uT327cuHH0798fFxcXKleujKIoBRaU8uLl5YWXlxe1atWibt26BAQEsHv3bpo3b16o1+fcTf7UqVNUr1491/PDhg2jZ8+epsd+fn757svOzo4aNWoU6rh3TjFUFMU0nTY2NpannnqK4cOH8+677+Lh4cH27dsZOHAgmZmZ97Uwe3JyMr6+vkRGRuZ6LueuepMnT+a5557j559/ZsOGDUyaNImVK1fStWvXez6uKJukKFVO3VmQstEpqGoWIedXoFOzUKy8MHUtJZPBy/Zz4Ox1bPUKM59pSNfGVSwdllXT6XSEhISU6B16UvftI27UixgTE7ENCCBg0SLsqwWX2PFE+VAauSnEvZL8FFom+Vn2qarK0GFD0bvr8RvoV+SCVA5Fr+A30I+UkykMHTaUbt263dMXwZ6enrRv35558+bx4osv5ruu1O28vLzyLOLkVcAqjJyizp0jsgpy+PBh4NZIpbx4eHiYFlsvLQcOHMBoNDJr1izT72hxTN0DCA0NJSEhARsbG4KCgvLdrlatWtSqVYtXXnmFZ599liVLltC1a1fs7OwwGAzFEktZda/5WRbJvxDlUF4FqVsUMvXOgPmIKWubyhfzbwrdFuzgwNnruDnYsOyFplKQ0ojMzMwS23fiT+s598JAjImJODZqRNCqlVKQEoVWkrkpxP2S/BRaJvlZtimKwqKFizAkGrj45UVUQ9FGGOVQDSoXv7yIIdHAooWL7mtmwoIFC8jOziYsLIxVq1Zx4sQJoqOj+frrr/n777/R6/WFi6kQo6X27NnDvHnzOHz4MGfPnuXPP//k2WefpXr16qZRUhcuXKBOnTrs3bsXgNOnTzNt2jQOHDhAbGwsP/74I3379uWRRx7JNZ3OkmrUqEFWVhZz587lzJkzLF++nIULFxbLvtu1a0fz5s3p0qULv/32G7GxsezcuZO33nqL/fv3k5aWxqhRo4iMjOTs2bPs2LGDffv2UbduXQCCgoJITk5m06ZN/PvvvxZZJN7SijqaryyTolQ5k39BCoyKDdG+XTAq/z9AztoKU/tjr9FtwQ5ir6ZSpaIja0eE07y6p6XDEtz61ik6OrrY79Cjqir/LlzExXHjULOycG3fnqpfLcWmlL+NEmVXSeWmEMVB8lNomeRn+dC9e3dWr1pN0r4kLnx+ociFKdWgcuHzCyTtS7qvqXs5qlevzqFDh2jXrh1vvPEGjRo1IiwsjLlz5zJ27FimTZtWqP2kp6ffdRsnJyfWrl1L27ZtqV27NgMHDqRhw4Zs2bIFe/tbs06ysrKIjo42FU7s7Oz4448/eOyxx6hTpw6vvvoq3bt356effrr3TpeARo0a8dFHH/H+++/ToEEDVqxYwYwZM4pl34qi8Msvv/DII48wYMAAatWqRa9evTh79iyVK1dGr9dz9epV+vbtS61atejZsyePP/44U6ZMASA8PJxhw4YRERGBt7c3M2fOLJa4ypLC5Gd5oajWVIK7R0lJSbi7u5OYmIibm5ulw8lXQQUpAINiy7EqvQk5vwK9mmX2XLZRpe/3GayOyi63U/nWH73ImNVHyMw20qiKO1/0ewhvV3tLhyX+YzAYOHbsGCEhIYX+hutu1Kws4qdMIfHbW8VWjwEDqDRuLIpMIxBFUBK5KURxkfwUWib5qV3p6enExMQQHByMg4NDoV5zL2tLFXdBqrioqkpaWhqOjo6ynqzQnLKUnwVdSwpbR5FPZuXE3QpSd1OeR0ypqsrCLacZ9b9DZGYbaV+vMiuHNJeCVDlnSE4mbuiwWwUpnY7KE96m8vjXpCAlhBBCCHEPijpiSqsFKSGEtsins3JAVVWGDxuKrzMsebrggpTemJXvczY6hSVP2+PrDMOHDS0X81izDUbe/v4v3tvwNwADWgSx8PkHcbSTb+u0qLi+Rc2Kj+fsc71J2bkTxdGRKvPn4dG7d7HsW1gn+YZfaJnkp9Ayyc/ypbCFKSlICSEKS4pS5YCiKHy6cBHxKTDgxwyyjXn/46BXswi5kHvqXo5so8qAHzOIT4FP73MBQi1Izshm0LL9rNhzDkWBiU/VY1Kn+uiLOIpMlA69Xl8sw/vTT5wgNqIXGSdPovf2InD5clxbty6mKIU1Kq7cFKIkSH4KLZP8LJ/uVpgqCwUpRVFwcnIq8593RPlkbfkpRalyonv37qxatZrVUdn0/T7vwpSKQpKDPyq5k7u8rSmVkJhOz4W7iIy+goOtjkXPP8gLD8ud1rRMVVWSkpLua4Re8tatnO39PNmXL2NfswbBK1fi2KB+MUYprFFx5KYQJUXyU2iZ5Gf5lV9hqiwUpOBWbhoMBslNoUnWlp9SlCpH7laYMio2nPFub3b3PSh/BakT8Ul0XbCDqPgkvFzsWDWkOY/V97F0WOIujEYjZ86cuec79FxfuYq44SMwpqbi1KwZgStWYOvvX8xRCmt0v7kpREmS/BRaJvlZvt1ZmDJmGctEQSpHRkaGpUMQIl/WlJ9SlCpnCjNi6nblrSC19eQVeizcRXxiOjUqubBuRAsaBVSwdFiiBKlGI5c//JCEyZPBYMC9a1eqfrYIvYbvlCmEEEIIUR7cXpj6Z/w/ZaYgJYTQDilKlUOFLUyVt4LUqn3nGLB0H8kZ2TSr5sF3w8IJ8HCydFiiBBkzMrgw5lWufvElAF4vvYjv9HdR7OwsHJkQQgghhHXIKUy56dykICWEKDKbu28iyqKcwlRERE8AlnWxR9GrOGQlAmq5Kkipqsqs304yb/MpALo29ue97iHY28iimmWNg4NDobfNvn6d8yNGknboENja4vfONNw7dy7B6IQ1K0puClHaJD+Flkl+Wofu3bvTrVu3MrUwc1mKVVgfa8pPKUqVY7kLU1AnYV25KkhlZBt47duj/HD4IgAvta3JK+1qWtUvcXmh1+upU6dOobbNjI3l3NChZJ09h87VlSpz5+LcrGkJRyisVVFyU4jSJvkptEzy07qUpb+/FUXB0dHR0mEIkSdry0+ZvlfO3T6Vr9+PWSQ41KTfj1nloiB1IzWTPl/s5YfDF7HRKXzwTEPGtK9Vpv5BFP/PaDRy9erVuy6GmnrwILG9niXr7Dls/fwI+uZ/UpASJaqwuSmEJUh+Ci2T/BRapaoq2dnZZeruZkuXLqVChQqWDqPQIiMjURSFGzduWDoUi1IUhe+//x6A2NhYFEXh8OHD+W6fc97+/fff+8rPsnT+pShlBXIKU2ujVWbFN2VttFrmC1LnrqbS7dOd7I29hqu9DV+90IQeYQGWDkvcB1VViYuLK/Dim7RhA+f6D8Bw4wYODRoQtGol9jVqlGKUwhoVJjeFsBTJT6Flkp+iJPTv3x9FUVAUBVtbWypXrkz79u1ZvHhxkQqgmZmZxRbTli1baNOmDR4eHjg5OVGzZk369etXrMe4FzmFiZwfb29vnnjiCY4dO2a23datW+nUqRN+fn5mRZS7CQoKYvbs2cUfuIVlZmbi5eXFe++9l+fz06ZNo3LlymRlZRVpvwEBAcTHx9OgQYNCxVBYrVq1YvTo0WZt4eHhxMfH4+7uXqQYLUGKUlaie/fufP31Cgx6O77+ekWZLkgdPHedrgt2cOZKCn7uDnw7PJwWNbwsHZYoQaqqcvWLL7jwyhjUzExc2rYlcNlX2Hh7Wzo0IYQQQgirlXXxImnHj+f6ybp4sUSP27FjR+Lj44mNjWXDhg20bt2al19+maeeeors7OwSPfadoqKi6NixI2FhYWzdupVjx44xd+5c7OzsMBgMpRpLfqKjo4mPj+fXX38lIyODJ5980qzokZKSQqNGjZg/f74Fo9QOOzs7nn/+eZYsWZLrOVVVWbp0KX379sXW1rZI+9Xr9fj4+GBjU/KrKNnZ2eHj41MmZhFJUcqKdOnShb59+9GlSxdLh3LPNv4Vz7Of7eZqSiYN/N1YN7IFtX1cLR2WKEFqdjYJU6Zw+cNZAFTs04cqn8xB5yR3VhRCCCGEsJSsixc53fFxYrs/k+vndMfHS7QwZW9vj4+PD/7+/oSGhvLmm2/yww8/sGHDBpYuXWra7saNGwwaNAhvb2/c3Nxo06YNR44cMdvXDz/8QGhoKA4ODlSrVo0pU6aYFbYUReHTTz/l8ccfx9HRkWrVqvHtt9+anv/tt9/w8fFh5syZNGjQgOrVq9OxY0c+//xzs3WBtm/fTsuWLXF0dCQgIICXXnqJlJQU0/MZGRmMHTsWf39/nJ2dadq0KZGRkfmegytXrhAWFkbXrl3JyMgo8HxVqlQJHx8fQkNDGT16NHFxcfz999+m5x9//HHeeecdunbtWuB+7sfVq1d59tln8ff3x8nJiZCQEL755huzbVq1asWLL77I6NGjqVixIpUrV+bzzz8nJSWFAQMG4OrqSo0aNdiwYYPpNQaDgYEDBxIcHIyjoyO1a9dmzpw59x3vwIEDOXnyJNu3bzdr37JlC2fOnGHgwIHs27eP9u3b4+Xlhbu7O48++igHDx7Md595Td/75ZdfqFWrFo6OjrRu3ZrY2Fiz19ztvPXv358tW7YwZ84c04i42NjYPKfvfffdd9SvXx97e3uCgoKYNWuW2bGCgoKYPn06L7zwAq6urlStWpXPPvus6CeviKQoZWVcXctmAUdVVb7YdobhKw6SkW2kTZ1KrBrSnMpuckeX8uTO/DQkpxA3YgQ3Vq4CRaHym2/g89abKHq5s6IoXWX12imsg+Sn0DLJz7JDVVWMqamF/smKj0fNZ4qRmplJVnx8ofdVHFM827RpQ6NGjVi7dq2prUePHly+fJkNGzZw4MABQkNDadu2LdeuXUOn07Ft2zb69u3Lyy+/TFRUFIsWLWLp0qW8++67ZvueMGEC3bt358iRI/Tu3ZtevXpx4sQJAHx8fIiPj2fr1q35xnb69Gk6duxI9+7dOXr0KKtWrWL79u2MGjXKtM2oUaPYtWsXK1eu5OjRo/To0YOOHTvyzz//5NpfXFwcLVu2pEGDBnz77bfY29sX6hwlJiaycuVK4NZImtKUnp7Ogw8+yM8//8xff/3FkCFD6NOnD3v37jXb7quvvsLLy4u9e/fy4osvMnz4cHr06EF4eDgHDx7kscceo0+fPqSmpgK31q6rUqUKa9asISoqiokTJ/Lmm2+yevXq+4o3JCSEhx56iMWLF5u1L1myhPDwcOrUqcPNmzfp168f27dvZ/fu3dSsWZMnnniCmzdvFuoYcXFxdOvWjU6dOnH48GEGDRrE66+/DoBOpyvUeZszZw7Nmzdn8ODBxMfHEx8fT0BA7mVtDhw4QM+ePenVqxfHjh1j8uTJTJgwwayICzBr1izCwsI4dOgQI0aMYPjw4URHRxf19BWNKu4qMTFRBdTExERLh2KVsg1GdeL3x9TA8evVwPHr1bfWHVWzsg2WDkuUsMyEBPV0l65qVO066olGD6hJv/9u6ZCEEEIIIcqFtLQ0NSoqSk1LSzO1GVJS1KjadSzyY0hJKXTs/fr1Uzt37pzncxEREWrdunVVVVXVbdu2qW5ubmp6errZNtWrV1cXLVqkqqqqtm3bVp0+fbrZ88uXL1d9fX1NjwF12LBhZts0bdpUHT58uKqqqpqdna32799fBVQfHx+1S5cu6ty5c80+Ow4cOFAdMmSI2T62bdum6nQ6NS0tTT179qyq1+vVCxcumG3Ttm1b9Y033lBVVVWXLFmiuru7q3///bcaEBCgvvTSS6rRaCzwXG3evFkFVGdnZ9XZ2VkFVEB9+umn830NoK5bt67A/eYIDAxUP/744wKPff369Xxf/+STT6qvvvqq6fGjjz6qPvzww6bH2dnZqrOzs9qnTx9TW3x8vAqou3btyne/I0eOVLt3716oPhRk4cKFqouLi3rz5k1VVVU1KSlJdXJyUr/44os8tzcYDKqrq6v6008/mdpuP58xMTEqoB46dEhVVVV944031Hr16pntY/z48fd03l5++WWzbe48/88995zavn17s23GjRtndvzAwED1+eefNz02Go1qpUqV1E8//TTfWPK6luQobB1FRkpZEaPRSEJCQpm6A0pqZjZDl+/nq11nAXjribpM69wAG72kbnlze36mR0cTG9GLjBMn0Ht6ErjsK1zbtbN0iMJKlcVrp7Aekp9CyyQ/RWlTVdW0hs6RI0dITk7G09MTFxcX009MTAynTp0iKyuLI0eOMHXqVLPnc0ac5IzEAWjevLnZcZo3b24aKaXX61myZAnnz59n5syZ+Pv7M336dOrXr098fLwplqVLl5odp0OHDhiNRmJiYjh27BgGg4FatWqZbbNlyxZOnz5tOm5aWhotW7akW7dupulaOerXr2963eOPP24W77Zt2zhw4ABLly6lVq1aLFy4sEjndfr06WZxnTt3rkivh1vT7KZNm0ZISAgeHh64uLjw66+/5tpXw4YNTf+v1+vx9PQkJCTE1Fa5cmUALl++bGqbP38+Dz74IN7e3ri4uPDZZ58VGGNB5+p2zz77LAaDwTTqatWqVeh0OiIiIgC4dOkSgwcPpmbNmri7u+Pm5kZycnKhz8+JEydo2tT8LuI5uZaVlYWqqoU+b4U5VosWLczaWrRowT///GO29tnt519RFHx8fMzOdUko+RW2hMVlXbxI9vXrGI1GLp06hWuNGuh0OmwqVsTWz8/S4eXrclI6A7/az7ELidjb6Pg44gGeCPG1dFim83knrZ9PrbozP22S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",
      "text/plain": [
       "<Figure size 1200x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "file2 = (\n",
    "    \"/Users/liyin/.adalflow/ckpt/HotPotQAAdal/constrained_max_steps_12_77514_run_1.json\"\n",
    ")\n",
    "# plot_training(file2)\n",
    "\n",
    "compare_two_trainings(\n",
    "    file1=file, model1=\"GPT3.5\", file2=file2, model2=\"DeepSeek-R1-Llama\"\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Test dataset**\n",
    "\n",
    "| Model | EM | Running Time | Notes |\n",
    "| --- | --- | --- | --- |\n",
    "| o1  | 49 | N/A |  |\n",
    "| o3 mini | N/A |  | |\n",
    "| gpt3.5 | 39.5 |  | |\n",
    "| r1 distilled  | 41.5 |  | structure data format errors |\n",
    "| gpt3.5 trained | 44.5 |  | |\n",
    "| r1 distilled trained |49.5|  | |"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 🤗  Experiments conclusion\n",
    "\n",
    "\n",
    "1. A trained DeepSeek R1 LLaMA70B(r1 distilled) is even better than GPT-o1 without training.\n",
    "2. The “Reasoning” model is less susceptible to overfitting compared with non-reasoning models. By comparing it with GPT-3.5, both gpt3.5 and r1 distilled start at the same accuracy and reach similar accuracy on the validation dataset. However, on the test dataset, r1 distilled often achieves much higher accuracy.\n",
    "3. R1 can think too long and run out of output tokens before finishing the task. The optimized prompt specifically added instructions for it to “think less.”\n",
    "\n",
    "\n",
    "\n",
    "GPT3.5 trained final prompt:\n",
    "\n",
    "\"data\": \"Answer questions with short factoid answers. Extract the authoritative answer exactly as it appears in the provided context or, if the context is missing or ambiguous, only after a rigorous cross-validation process. In such cases, you MUST consult at least two verified external records and continue to search until a consensus is reached on the precise answer. Do not rely on local inferences or substitute synonyms. Ensure that the final answer exactly matches the verified source, including matching the exact wording, case, punctuation, and any qualifiers (e.g. 'American' before 'football'). Follow these steps:\\n\\n1. Identify all relevant phrases from the provided context or from the verified external records.\\n2. Cross-check at least two reliable sources to confirm the authoritative fact.\\n3. If multiple sources disagree, continue verification until a consensus is reached.\\n4. Output the final answer exactly as specified by the verified source, without any modifications.\\n\\nFor example, if external records confirm that the correct answer is 'Edward Woodward' for a missing context query on a host, output 'Edward Woodward' exactly; for another query, if the precise verified answer is 'University of Oregon', output 'University of Oregon' exactly; and for a query about 'Bo Knows Bo', ensure the complete verified answer 'baseball and American football' is returned verbatim.\",\n",
    "\n",
    "DeepSeek r1 distilled trained final prompt:\n",
    "\n",
    "value: Answer questions with short factoid responses. You will receive context (with\n",
    "  relevant facts) and a question. Internally compute the correct answer using hidden,\n",
    "  rapid reasoning and provide only the final answer exactly matching the ground truth\n",
    "  with no additional commentary or qualifiers. If your internal process requires more\n",
    "  than three steps, accelerate the computation to deliver the prompt final answer.\n",
    "  For example, if the ground truth is 'nine', output exactly 'nine'; if it is 'Walt\n",
    "  Disney', output exactly 'Walt Disney'. Proceed accordingly.\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Issues and feedback\n",
    "\n",
    "If you encounter any issues, please report them here: [GitHub Issues](https://github.com/SylphAI-Inc/LightRAG/issues).\n",
    "\n",
    "For feedback, you can use either the [GitHub discussions](https://github.com/SylphAI-Inc/LightRAG/discussions) or [Discord](https://discord.gg/ezzszrRZvT)."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": ".venv",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
